Elettracompany.com

Компьютерный справочник
3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Node js excel

Как создать файл Excel с помощью Nodejs?

Я программист nodejs . Теперь у меня есть таблица данных, которые я хочу сохранить в файл формата Excel . Как мне это сделать ?

Я нашел несколько библиотек узлов . Но большинство из них-это синтаксические анализаторы Excel, а не писатели Excel .Я использую сервер Linux . Следовательно, нужно что-то, что может работать на Linux . Пожалуйста, дайте мне знать, если есть какие-то полезные библиотеки, которые вы знаете .

или есть способ конвертировать CSV-файл в xls-файл (программно ) ?

7 ответов:

excel4node является поддерживаемым, родной Excel file creator построенный от официальной спецификации. Это похоже, но более поддерживается, чем mxexcel-builder упоминается в другом ответе.

Я только что нашел простой выход . Это работает —

просто создайте файл с вкладками в качестве разделителей (аналогично CSV, но замените запятую на вкладку ). Сохраните его с расширением .XLS . Файл можно открыть в Excel .

какой-то код, чтобы помочь.

при этом создается файл в формате XLS . Это не работает, если вы попробуете XLSX вместо XLS .

использовать msexcel-builder. Установите его с помощью:

XLSx в новом офисе-это просто сжатая коллекция XML и других файлов. Таким образом, вы можете сгенерировать это и соответственно застегнуть его.

бонус: вы можете создать очень красивый шаблон со стилями и так далее:

  1. создайте шаблон в «вашей любимой программе электронных таблиц»
  2. сохраните его как ODS или XLSx
  3. распаковать содержимое
  4. использовать его как базовый и заполнить content.xml (или xl/worksheets/sheet1.xml ) С вашими данными
  5. сжать его все перед подачей

однако я нашел ODS (openoffice) гораздо более доступным (excel все еще может открыть его), вот что я нашел в content.xml

вы должны проверить ExcelJS

работает с форматами CSV и XLSX.

отлично подходит для чтения/записи XLSX потоков. Я использовал его для потоковой загрузки XLSX в объект Express response, в основном так:

отлично работает для больших файлов, работает намного лучше, чем excel4node (получил огромное использование памяти и процесс узла» из памяти » сбой после почти 5 минут для файла, содержащего 4 миллиона ячеек в 20 листов), поскольку его потоковые возможности гораздо более ограничены (не позволяет » фиксировать ()» данные для извлечения кусков, как только они могут быть сгенерированы)

или-построить на @ Jamaica Geek ответ, используя Express-чтобы избежать сохранения и чтения файла:

используя fs пакет мы можем создать файл excel / CSV из данных JSON.

Шаг 1: хранить данные JSON в переменной (здесь он находится в jsn переменной).

Шаг 2: создать пустую строковую переменную (вот она данные).

Шаг 3: добавить каждое свойство jsn для строковых переменных данных, при добавлении put ‘t’ между 2 ячейками и ‘n ‘ после завершения ряд.

Как создать файл Excel с помощью Nodejs?

Я программист nodejs. Теперь у меня есть таблица данных, которую я хочу сохранить в формате Excel. Как мне это сделать?

Я нашел несколько библиотек Node. Но большинство из них — Excel Parsers, а не Excel Writers. Я использую Linux Server. Следовательно, нужно что-то, что может работать в Linux. Пожалуйста, дайте мне знать, есть ли полезные библиотеки, о которых вы знаете.

Или есть способ конвертировать CSV файл в файл xls (программно)?

node.js file-io npm excel export-to-excel

7 ответов

27 Решение mikemaccana [2017-03-10 18:08:00]

excel4node является поддерживаемым встроенным создателем файла Excel , созданным из официальной спецификации. Он похож на, но более поддерживается, чем mxexcel-builder, упомянутый в другом ответе.

Я просто вычислил простой выход. Это работает —

Просто создайте файл с вкладками в качестве разделителей (аналогично CSV, но замените запятую Tab). Сохраните его с расширением .XLS. Файл можно открыть в Excel.

Некоторый код для помощи —

Создает файл в формате XLS. Он не работает, если вы попробуете XLSX вместо XLS.

Используйте msexcel-builder. Установите его с помощью:

XLSx в новом Office — это всего лишь заархивированная коллекция XML и других файлов. Таким образом, вы можете сгенерировать это и закрепить его соответствующим образом.

Бонус: вы можете создать очень красивый шаблон со стилями и так далее:

  • Создайте шаблон в своей любимой программе электронных таблиц
  • Сохраните его как ODS или XLSx
  • Распакуйте содержимое
  • Используйте его как базу и заполните content.xml (или xl/worksheets/sheet1.xml ) своими данными.
  • Заменить все перед службой

Однако я нашел ODS (openoffice) гораздо более доступным (excel может его открыть), вот что я нашел в content.xml

Читать еще:  Excel максимальная длина строки в ячейке

Или — постройте на @Jamaica Geek ответ, используя Express — чтобы избежать сохранения и чтения файла:

2 Frosty Z [2017-12-08 12:43:00]

Вы должны проверить ExcelJS

Работает с форматами CSV и XLSX.

Отлично подходит для чтения/записи потоков XLSX. Я использовал его для потоковой передачи XLSX файла для объекта экспресс-ответа, в основном так:

Работает отлично для больших файлов, работает намного лучше, чем excel4node (получило огромную память и Node обработал «из памяти» ) после почти 5 минут для файла, содержащего 4 миллиона ячеек в 20 листы), поскольку его возможности потоковой передачи гораздо более ограничены (не позволяет «commit()» данным извлекать куски, как только они могут быть сгенерированы)

Используя пакет fs, мы можем создать файл excel/CSV из данных JSON.

Шаг 1: Храните данные JSON в переменной (здесь она находится в переменной jsn).

Шаг 2: Создайте пустую строковую переменную (здесь это данные).

Шаг 3: Добавьте каждое свойство jsn в строковые переменные, а добавьте put ‘t’ между 2 ячейками и ‘n’ после завершения строки.

How To Read An Excel File In Node.js

It Couldn’t Be Easier

H ave you ever needed to get and analyze the data from an Excel (.xlsx) Spreadsheet in node.js? If not, if you ever do, here’s a solution.

In this article we will focus on,

  1. Reading the data from the spreadsheet file.
  2. Understanding how the data is returned.
  3. Getting a list (names) of worksheets in a workbook.
  4. Specifying from which sheet we want data.

Reading The File

Setup

You will of need to have node.js installed.

You can create whatever Excel file you like, a screenshot of the simple file I will use for this article is below. I named the file Data.xlsx.

I will be using Visual Studio Code (VSCode).

  1. Open your terminal window and type, npm init. You can just accept the defaults which will make our main file index.js as seen in your package.json file.
  2. In your terminal window, type the following to install the package that makes it all work.
  1. Create a file named index.js and open it.

Reading The Excel File

We are now ready to read the file.

Add the following code to your index.js file.

Side Note: In the require statement, we specified /node. This is important as this can also be done with JavaScript in the browser by using,

We want the node version, however.

The Code

The first line imports the package.

The second line reads the file, returning a promise. When it is done reading we get arrays.

Each array (the row parameter of the callback function) contains a row in the spreadsheet. Each of these has three arrays corresponding to the three columns of our spreadsheet.

Essentially we are getting back a two-dimensional array.

Viewing the Raw Data

Modify your code to verify we are getting the data from the file.

Run this in debug mode, F5, and then run without debug, Ctrl+F5.

Running in both will help us visualize what we are getting back as well verify the data was read from the file.

F5

Here we see we have an array with five elements. Each element is a row from our file. Each row contains an array with three elements. These three arrays correspond to our columns. A two-dimensional array.

CRTL+F5

This gives a a better picture of the array structure.

Getting The Actual Data

Since the data is in arrays, it is easily accessible. Two way’s of getting to the data are below.

forEach Loop

Modify your code as follows to see each piece of data and it’s data type.

The data parameter contains contains the spreadsheet cell entry.

For our purpose the output is just a list, but we have access to the data and can verify its data type.

for..in Loop

Modify your code to use the for…in loop.

Similar output when run but this code allows us to see the array structure better and how to access the array elements.

rows[i][j] contains the data in each spreadsheet cell.

Dealing With Multiple Sheets

What if we have two worksheet named Dev and Exec?

Читать еще:  Почему столбцы в excel обозначены цифрами

By default, when we read, the first sheet is read. However we can,

  • Get a list of sheet names
  • Specify the Sheet from which we want data.

Node js excel

A full featured xlsx file generation library allowing for the creation of advanced Excel files.

excel4node conforms to the ECMA-376 OOXML specification 2nd edition

Code references specifications sections from ECMA-376 2nd edition doc
ECMA-376, Second Edition, Part 1 — Fundamentals And Markup Language Reference.pdf
found in ECMA-376 2nd edition Part 1 download at http://www.ecma-international.org/publications/standards/Ecma-376.htm

excel4node comes with some generic functions and types

xl.getExcelRowCol(cellRef)
Accepts cell reference (i.e. ‘A1’) and returns object with corresponding row and column

xl.getExcelAlpha(column)
Accepts column as integer and returns corresponding column reference as alpha

xl.getExcelCellRef(row, column)
Accepts row and column as integers and returns Excel cell reference

xl.getExcelTS(date)
Accepts Date object and returns an Excel timestamp

An instance of the Workbook class contains all data and parameters for the Excel Workbook.

Workbook constructor accepts an optional configuration object.

wb.addWorksheet(name, options);
Adds a new Worksheet to the Workbook
Accepts name of new Worksheet and options object (see Worksheet section)
Returns a Worksheet instance

wb.setSelectedTab(id);
Sets which tab will be selected when the Workbook is opened
Accepts Sheet ID (1-indexed sheet in order that sheets were added)

wb.createStyle(opts);
Creates a new Style instance
Accepts Style configuration object (see Style section) Returns a new Style instance

wb.write();
The write() method can accept a single filename, a filename with callback function or an HTTP response object.

wb.writeToBuffer();
The writeToBuffer() method access no parameters and returns a promise that resolves with the nodebuffer generated by the JSZip library. This buffer can then be sent to other streams.

An instance of the Worksheet class contains all information specific to that worksheet

Worksheet constructor is called via Workbook class and accepts a name and configuration object

Full Worksheet options. All options are optional.

Note: headerFooter strings accept Dynamic Formatting Strings. i.e. ‘&L&A&C&BCompany, Inc. Confidential&B&RPage &P of &N’

Worksheet data validations

ws.addDataValidation();
Accepts a validation options object with these available options. All options are optional with exception of sqref.

Worksheet Conditional Formatting

Conditional formatting adds custom formats in response to cell reference state. A subset of conditional formatting features is currently supported by excel4node.
Formatting rules apply at the worksheet level.
The following example will highlight all cells between A1 and A10 that contain the string «ok» with bold, green text:

The only conditional formatting type that is currently supported is expression.
When the formula returns zero, conditional formatting is NOT displayed. When the formula returns a nonzero value, conditional formatting is displayed.

Worksheet Page Breaks

Worksheet page breaks can be added at rows and columns

ws.addPageBreak(type, position) where type is row or column and position is the last row/column before the page break.

Worksheet Print Area

Worksheet print areas can be set

ws.setPrintArea(startRow, startCol, endRow, endCol) where parameters are numbers corresponding to print area

Rows and Columns

Set custom widths and heights of columns/rows

Set rows and/or columns to create a frozen pane with an optionall scrollTo

Add Filters to a row If not options are given to the filter function, a filter will be added to all columns that contain data. Optionally, if you wish to restrict your filter to a specific range, you can specify start and end rows and columns for that range. The filter row should be included in this range.

Hide a row or column

Create groupings of rows or columns and optionally state to collapse the grouping

Multiple groupings can be nested as demonstrated in this gist

The cell method accesses a single cell or range of cells to manipulate
cell method takes two required parameters and 3 optional parameters
.string() accepts a String or Array. Sending array allows for multiple font formattings within the same cell.
.number(number) accepts a number
.formula(formula) accepts an Excel formula
.date(date) accepts either a date or a date string
.link(url, [displayStr, tooltip]) accepts a URL and optionally a displayStr and hover tooltip
.bool(value) accepts a boolean (true or false)
.style(object) accepts the same object as when creating a new style. When applied to a cell that already has style formatting, the original formatting will be kept and updated with the changes sent to the style function. .comment(comment, options) Add a comment to the particular cell

Читать еще:  Скопировать лист excel в другой файл

Style objects can be applied to Cells
Any combination of style values can be set
Creating a preset style is much more efficient than applying styles to individual cells

Comments can be added to cells with some options

Adds and image to the worksheet.
currently on ‘picture’ type is supported
positioning has 3 types, ‘absoluteAnchor’, ‘oneCellAnchor’, ‘twoCellAnchor’
absoluteAnchor takes two position elements in either EMUs or measurements in cm, mm, or in
x:0, y:0 is top left corner of worksheet
oneCellAnchor and twoCellAnchor types will take positional objects:

position type of oneCellAnchor will take a single «from» position
position type of twoCellAnchor will take a «from» and «to» position
specifying a twoCellAnchor will automatically adjust the image to fit within the bounds of the two anchors.

You can also pass buffer with loaded to memory image:

SheetJS Tutorial – Create xlsx with Javascript

In this tutorial, we’re going to talk about SheetJs. An Excel JavaScript library that let you do so many things with Excel such as from creating exporting workbook from scratch, converting html table, array or JSON into downloadable xlsx file. And the best thing is that, everything will be done on browser-side only. No server-side script or AJAX involved at all!

There 2 versions of SheetJS, one is community version which is free, and Pro version which has extended feature. Obviously, we’re going to use community version for this tutorial. Just download from github and copy the xlsx.full.min.js to your web directory and include it to your script tag

Creating a Workbook

Now let’s start with creating a new workbook by calling book_new() utility function which will return an empty workbook object.

You can update the workbook properties such as title, subject, author with wb.Props.

Now we have the workbook, the next step is to create a worksheet and add it to the workbook. First, you’ll need to assign a new sheet name and push it to the SheetNames array.

Then, for the content inside the sheet, you have several options. You have create a sheet from array of array, JSON or html table. For this tutorial, I’m going to use array of array. The structure is quite straightforward. Each array represent the row data and the members are the cell content.

Now create the sheet from this array by using aoa_to_sheet()

And assign the sheet object to the workbook Sheets array.

Congratulation, now you have created a workbook and a worksheet with first row of data. The next step is to generate an xlsx file.

Exporting Workbook for Download

We need to export the workbook as xlsx binary. Use write function then pass the bookType as xlsx and output Type as binary

We now have our xlsx binary data on wbout var. However, the correct content type for excel file is octet stream so you’ll need to convert the binary data into octet. We can achieve that by using arrayBuffer, UInt8Array and bit operation like this.

We’re going to utilize Filesaver.js and Blob to handle the file saving for cross browser support. Use saveAs() function and create a new Blob object from octet array. Set the content type as octet-stream. follow by excel file naming that you would like.

We’re ready; Let’s test it!

You can see it in action in video below.

So that’s the basic of how to create Excel file with pure javascript using SheetJS. In next tutorial, we’ll show you how to convert HTML table into excel file in just a few minutes with SheetJS.

Check our other interesting tutorial from our Youtube Channel – Don’t forget to like or subscribe to stay tune

Ссылка на основную публикацию
Adblock
detector