Hướng dẫn exceljs get multiple cells - exceljs lấy nhiều ô
Tôi có một mẫu Excel như thế này: Dữ liệu tôi nhận được thật đáng buồn chỉ là một mảng 1D như:
Tôi đang sử dụng gói nodejs và exceljs npm. Vì vậy, tôi cần phải điền bằng cách nào đó các ô C95: C98, F95: F98, I95: I98 .. Tương tự (nhưng không giống nhau) sẽ áp dụng cho một vài bảng khác trong cùng một bảng tính, vì vậy tôi cần phải làm điều này với vòng lặp. Tôi gặp rắc rối với việc lấp đầy nhiều dòng và cũng để lấp đầy giá trị khác từ mảng của tôi, bởi vì tôi đã có A-B, C-D, G-H, ... được chèn vào Excel (tôi có thể ghi đè, đó không phải là vấn đề). Mã cho bây giờ là:
Nhưng những gì tôi nhận được khi trở lại chỉ là thế này:
Cảm ơn bạn vì mã, chúng tôi vừa thực hiện một số thay đổi bằng cách sử dụng thông số như "A1: C4" thay vì làm việc với hai thông số import ExcelJS from "exceljs" export const selectRange = (sheet: ExcelJS.Worksheet, rangeCell: string) => { const [startCell, endCell] = rangeCell.split(":") const [endCellColumn, endRow] = endCell.match(/[a-z]+|[^a-z]+/gi) as string[] const [startCellColumn, startRow] = startCell.match( /[a-z]+|[^a-z]+/gi ) as string[] let endColumn = sheet.getColumn(endCellColumn) let startColumn = sheet.getColumn(startCellColumn) if (!endColumn) throw new Error("End column not found") if (!startColumn) throw new Error("Start column not found") const endColumnNumber = endColumn.number const startColumnNumber = startColumn.number const cells = [] for (let y = parseInt(startRow); y <= parseInt(endRow); y++) { const row = sheet.getRow(y) for (let x = startColumnNumber; x <= endColumnNumber; x++) { cells.push(row.getCell(x)) } } return cells } const lastRow = worksheet.lastRow._number; const row = selectRange(worksheet, `A${lastRow}:C${lastRow + 4}`); row.forEach(cell => { // TODO: Do something with each cell }); |