Я пытаюсь использовать данные существующего файла excel в собственном приложении для реагирования. Я пробовал с xlsx и Exceljs, но каждый раз у меня были ошибки. Каков наилучший способ использования данных Excel (это означает извлечение данных из каждой ячейки в таблице Excel) в реактивном приложении, пожалуйста?
Это пример кода, который я пытался использовать, но он неправильный (у меня следующая ошибка: Unhandled promise rejection, [TypeError: undefined is not an object (evaluating 'i.constants.F_OK')]
)
var Excel = require('exceljs');
var workbook = new Excel.Workbook();
workbook.xlsx.readFile("Liste_qcm2.xlsx")
.then(function() {
ws = workbook.getWorksheet("Sheet1")
cell = ws.getCell('A1').value
console.info(cell)
});
заранее спасибо
Я не использовал Excel, но похоже, что readFile предназначен для NodeJS (он принимает путь к файлу, а не объект File).
Вот фрагмент кода для SheetJS (xlsx), который работает на стороне клиента:
const fileData = await file.arrayBuffer()
const workbook = XLSX.read(fileData)
const firstSheet = workbook.SheetNames[0]
const worksheet = workbook.Sheets[firstSheet]
Значение file
— это объект File
из файла Input.
ОБНОВИТЬ
Приведенный выше фрагмент получает объект File из элемента <Input type = "file" ...>
. ReactNative изначально не поддерживает чтение/запись файлов, но есть модули, которые восполняют этот пробел, например. ReactNative
Вот Демонстрация SheetJS ReactNative, который показывает, как приступить к работе.
Вот фрагмент, который считывает каждый столбец в 1-й строке данных. Вы можете превратить это в двойной цикл, чтобы посетить каждую ячейку в электронной таблице.
function getHeaderRow(sheet: XLSX.WorkSheet) {
const headers = []
const range = XLSX.utils.decode_range(sheet['!ref'] ?? '')
const row = range.s.r
for (let col = range.s.c; col <= range.e.c; ++col) {
const cell = sheet[XLSX.utils.encode_cell({ c: col, r: row })] /* find the cell in the first row */
const header = (cell && cell.t) ? XLSX.utils.format_cell(cell) : "UNKNOWN " + col
headers.push(header)
}
return headers
}
Извините, я не понимаю, как использовать ваш фрагмент. Где мне ввести путь к моему файлу «test.xlsx»? Например, как отобразить всю первую строку?