исправлено складывание ячеек
This commit is contained in:
@@ -21,7 +21,7 @@ export function useMultiSheetEngine({
|
||||
const workbookRef = useRef<Workbook | null>(null)
|
||||
const [isCalculating, setIsCalculating] = useState(false)
|
||||
const [revision, setRevision] = useState(0) // Новый счетчик для обновлений
|
||||
const debouncedRecalcTimeoutRef = useRef<number | null>(null)
|
||||
const debouncedRecalcTimeoutRef = useRef<NodeJS.Timeout | null>(null)
|
||||
const isRecalculatingRef = useRef(false)
|
||||
|
||||
// Храним изначальные данные шаблона для сравнения
|
||||
@@ -149,8 +149,21 @@ export function useMultiSheetEngine({
|
||||
const cellName = columnToLabel(col) + (row + 1)
|
||||
const qualifiedName = `${sheetName}!${cellName}`
|
||||
|
||||
// Устанавливаем значение в движке без пересчета
|
||||
workbookRef.current.setCell(qualifiedName, value)
|
||||
// Конвертируем пустую строку в null
|
||||
const cellValue: CellValue = value === '' ? null : value
|
||||
|
||||
// Если значение начинается с =, то это формула
|
||||
if (typeof cellValue === 'string' && cellValue.startsWith('=')) {
|
||||
workbookRef.current.setCell(qualifiedName, cellValue)
|
||||
} else {
|
||||
// Пытаемся конвертировать в число, если возможно
|
||||
const numValue = Number(cellValue)
|
||||
if (!isNaN(numValue) && cellValue !== null && cellValue !== '') {
|
||||
workbookRef.current.setCell(qualifiedName, numValue)
|
||||
} else {
|
||||
workbookRef.current.setCell(qualifiedName, cellValue)
|
||||
}
|
||||
}
|
||||
},
|
||||
[]
|
||||
)
|
||||
@@ -163,8 +176,21 @@ export function useMultiSheetEngine({
|
||||
const cellName = columnToLabel(col) + (row + 1)
|
||||
const qualifiedName = `${sheetName}!${cellName}`
|
||||
|
||||
// Устанавливаем значение в движке
|
||||
workbookRef.current.setCell(qualifiedName, value)
|
||||
// Конвертируем пустую строку в null
|
||||
const cellValue: CellValue = value === '' ? null : value
|
||||
|
||||
// Если значение начинается с =, то это формула
|
||||
if (typeof cellValue === 'string' && cellValue.startsWith('=')) {
|
||||
workbookRef.current.setCell(qualifiedName, cellValue)
|
||||
} else {
|
||||
// Пытаемся конвертировать в число, если возможно
|
||||
const numValue = Number(cellValue)
|
||||
if (!isNaN(numValue) && cellValue !== null && cellValue !== '') {
|
||||
workbookRef.current.setCell(qualifiedName, numValue)
|
||||
} else {
|
||||
workbookRef.current.setCell(qualifiedName, cellValue)
|
||||
}
|
||||
}
|
||||
|
||||
// Запускаем безопасный пересчет
|
||||
safeRecalc()
|
||||
|
||||
Reference in New Issue
Block a user