Таблицы 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