
Таблицы Excel популярны в деловом мире как стандарт де-факто, нравится ли нам, как разработчикам, это. Иногда клиенты просят нас загрузить таблицу Excel, и все данные должны храниться в базе данных. XLSX - это пакет Node, который решает эту проблему. В этом посте мы собираемся использовать busboy для обработки данных формы.
Этот пост состоит из двух частей:
- Как разобрать лист Excel в формат JSON.
- Как создать таблицу Excel с использованием данных JSON.
Шаг 1. Установите пакет XLSX с помощью npm или bower.
npm i --save xlsx //or bower install js-xlsx
Шаг 2. Импортируйте Multer или busboy
npm install --save multer
Multer - это промежуточное программное обеспечение node.js для обработки multipart / form-data, которое в основном используется для загрузки файлов. Он написан поверх busboy для максимальной эффективности.
Busboy - это модуль Node.js для анализа входящих данных HTML-форм.
Шаг 2: импортируйте XLSX в index.js
const XLSX = require('xlsx')
Анализ данных Excel
req.busboy.on('file', (fieldname, file, fname) => {
if (fieldname === 'file') {
const buffers = []
file.on('data', (data) => {
buffers.push(data)
})
file.on('end', () => {
buffer = Buffer.concat(buffers)
workbook = XLSX.read(buffer, {
type: 'buffer',
})
})
}
})
req.busboy.on('finish', () => {
try {
const excelProducts = XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[0]], {
raw: false,
header: 1,
dateNF: 'yyyy-mm-dd',
blankrows: false,
})
} catch (err) {
console.log(err)
}
})
req.pipe(req.busboy)
- Прочтите файл Excel с помощью буфера. Мы используем busboy, потому что этот файл загружен пользователем. Если файл уже загружен, вы можете использовать XLSX.readFile (filename: string, opts ?: ParsingOptions), указав имя файла.
- XLSX.utils.sheet_to_json () используется для чтения данных рабочего листа в массив объекта. Другие параметры передаются для указания различных параметров, таких как использовать необработанные значения (истина) или форматированные строки (ложь), включать пустые строки в вывод, формат даты по умолчанию, если указан заголовок, первая строка считается строкой данных, иначе первая row - это строка заголовка и не считается данными.
Некоторые вспомогательные функции в XLSX.utils, генерирующие разные виды листов:
XLSX.utils.sheet_to_csvсоздает CSVXLSX.utils.sheet_to_txtгенерирует текст в формате UTF16XLSX.utils.sheet_to_htmlгенерирует HTMLXLSX.utils.sheet_to_jsonгенерирует массив объектовXLSX.utils.sheet_to_formulaeсоздает список формул
Создание листа Excel
data = [{
firstName: 'John',
lastName: 'Doe'
}, {
firstName: 'Smith',
lastName: 'Peters'
}, {
firstName: 'Alice',
lastName: 'Lee'
}]
const ws = XLSX.utils.json_to_sheet(data)
const wb = XLSX.utils.book_new()
XLSX.utils.book_append_sheet(wb, ws, 'Responses')
XLSX.writeFile(wb, 'sampleData.export.xlsx')
- json_to_sheet преобразует массив объектов JavaScript в рабочий лист. Существуют и другие методы преобразования данных в рабочие листы, такие как aoa_to_sheet, table_to_sheet. sheet_add_json используется для добавления массива объектов JavaScript в существующий рабочий лист.
- book_new () создает новую книгу на листе.
- book_append_sheet добавляет лист к книге с названием «Ответы».
- XLSX.writeFile (wb, «sampleData.export.xlsx») пытается записать wb в «sampleData.export.xlsx».
Вы также можете указать ширину каждого столбца и объединить ячейки.
Некоторые вспомогательные функции XLSX.utils для импорта различных данных в листы:
XLSX.utils.aoa_to_sheetпреобразует массив массивов данных JavaScript в рабочий лист.XLSX.utils.json_to_sheetпреобразует массив объектов JavaScript в рабочий лист.XLSX.utils.table_to_sheetпреобразует элемент DOM TABLE в рабочий лист.XLSX.utils.sheet_add_aoaдобавляет на рабочий лист массив массивов данных JavaScript.XLSX.utils.sheet_add_jsonдобавляет на рабочий лист массив объектов JavaScript.
Заключение:
Используя пакет XLSX, вы можете читать любой файл Excel, а также создавать файл Excel.
Спасибо за внимание.
Больше контента на plainenglish.io