Javascript прочитать excel файл
Read small to medium *.xlsx files in a browser or Node.js. Parse to JSON with a strict schema.
Also check out write-excel-file for writing simple *.xlsx files.
Install
If you're not using a bundler then use a standalone version from a CDN.
Browser
Note: Internet Explorer 11 requires a Promise polyfill. Example.
Node.js
Web Worker
web-worker.js
To convert table rows to JSON objects, pass a schema option to readXlsxFile() . It will return < rows, errors >object instead of just rows .
If no type is specified then the cell value is returned "as is": as a string, number, date or boolean.
There are also some additional exported type s available:
- Integer for parsing integer Number s.
- URL for parsing URLs.
- Email for parsing email addresses.
A custom type can be defined as a simple function:
A schema entry for a column may also define an optional validate(value) function for validating the parsed value: in that case, it must throw an Error if the value is invalid. The validate(value) function is only called when value is not empty (not null / undefined ).
Fixing spreadsheet structure for schema parsing. For example, how to ignore empty rows.
JSON (mapping)
Same as above, but simpler: without any parsing or validation.
Sometimes, a developer might want to use some other (more advanced) solution for schema parsing and validation (like yup ). If a developer passes a map option instead of a schema option to readXlsxFile() , then it would just map each data row to a JSON object without doing any parsing or validation. Cell values will remain "as is": as a string, number, date or boolean.
Multiple Sheets
By default, it reads the first sheet in the document. If you have multiple sheets in your spreadsheet then pass either a sheet number (starting from 1 ) or a sheet name in the options argument.
By default, options.sheet is 1 .
To get the names of all sheets, use readSheetNames() function:
Dates
XLSX format originally had no dedicated "date" type, so dates are in almost all cases stored simply as numbers (the count of days since 01/01/1900 ) along with a "format" description (like "d mmm yyyy" ) that instructs the spreadsheet viewer software to format the date in the cell using that certain format.
When using readXlsx() with a schema parameter, all schema columns having type Date are automatically parsed as dates. When using readXlsx() without a schema parameter, this library attempts to guess whether a cell contains a date or just a number by examining the cell's "format" — if the "format" is one of the built-in date formats then such cells' values are automatically parsed as dates. In other cases, when date cells use a non-built-in format (like "mm/dd/yyyy" ), one can pass an explicit dateFormat parameter to instruct the library to parse numeric cells having such "format" as dates:
Limitations
Performance
There have been some reports about performance issues when reading very large *.xlsx spreadsheets using this library. It's true that this library's main point have been usability and convenience, and not performance when handling huge datasets. For example, the time of parsing a file with 2000 rows / 20 columns is about 3 seconds. So, for reading huge datasets, perhaps use something like xlsx package instead. There're no comparative benchmarks between the two, so if you'll be making one, share it in the Issues.
Formulas
Dynamically calculated cells using formulas ( SUM , etc) are not supported.
TypeScript
I'm not a TypeScript expert, so the community has to write the typings (and test those). See example index.d.ts .
TypeScript
This library comes with TypeScript "typings". If you happen to find any bugs in those, create an issue.
References
Uses xmldom for parsing XML.
GitHub
On March 9th, 2020, GitHub, Inc. silently banned my account (erasing all my repos, issues and comments, even in my employer's private repos) without any notice or explanation. Because of that, all source codes had to be promptly moved to GitLab. The GitHub repo is now only used as a backup (you can star the repo there too), and the primary repo is now the GitLab one. Issues can be reported in any repo.
This article provides code samples that show how to perform common tasks with workbooks using the Excel JavaScript API. For the complete list of properties and methods that the Workbook object supports, see Workbook Object (JavaScript API for Excel). This article also covers workbook-level actions performed through the Application object.
The Workbook object is the entry point for your add-in to interact with Excel. It maintains collections of worksheets, tables, PivotTables, and more, through which Excel data is accessed and changed. The WorksheetCollection object gives your add-in access to all the workbook's data through individual worksheets. Specifically, it lets your add-in add worksheets, navigate among them, and assign handlers to worksheet events. The article Work with worksheets using the Excel JavaScript API describes how to access and edit worksheets.
Get the active cell or selected range
The Workbook object contains two methods that get a range of cells the user or add-in has selected: getActiveCell() and getSelectedRange() . getActiveCell() gets the active cell from the workbook as a Range object. The following example shows a call to getActiveCell() , followed by the cell's address being printed to the console.
The getSelectedRange() method returns the currently selected single range. If multiple ranges are selected, an InvalidSelection error is thrown. The following example shows a call to getSelectedRange() that then sets the range's fill color to yellow.
Create a workbook
Your add-in can create a new workbook, separate from the Excel instance in which the add-in is currently running. The Excel object has the createWorkbook method for this purpose. When this method is called, the new workbook is immediately opened and displayed in a new instance of Excel. Your add-in remains open and running with the previous workbook.
The createWorkbook method can also create a copy of an existing workbook. The method accepts a base64-encoded string representation of an .xlsx file as an optional parameter. The resulting workbook will be a copy of that file, assuming the string argument is a valid .xlsx file.
You can get your add-in's current workbook as a base64-encoded string by using file slicing. The FileReader class can be used to convert a file into the required base64-encoded string, as demonstrated in the following example.
Insert a copy of an existing workbook into the current one
The previous example shows a new workbook being created from an existing workbook. You can also copy some or all of an existing workbook into the one currently associated with your add-in. A Workbook has the insertWorksheetsFromBase64 method to insert copies of the target workbook's worksheets into itself. The other workbook's file is passed as a base64-encoded string, just like the Excel.createWorkbook call.
The insertWorksheetsFromBase64 method is supported for Excel on Windows, Mac, and the web. It's not supported for iOS. Additionally, in Excel on the web this method doesn't support source worksheets with PivotTable, Chart, Comment, or Slicer elements. If those objects are present, the insertWorksheetsFromBase64 method returns the UnsupportedFeature error in Excel on the web.
The following code sample shows how to insert worksheets from another workbook into the current workbook. This code sample first processes a workbook file with a FileReader object and extracts a base64-encoded string, and then it inserts this base64-encoded string into the current workbook. The new worksheets are inserted after the worksheet named Sheet1. Note that [] is passed as the parameter for the InsertWorksheetOptions.sheetNamesToInsert property. This means that all the worksheets from the target workbook are inserted into the current workbook.
Protect the workbook's structure
Your add-in can control a user's ability to edit the workbook's structure. The Workbook object's protection property is a WorkbookProtection object with a protect() method. The following example shows a basic scenario toggling the protection of the workbook's structure.
The protect method accepts an optional string parameter. This string represents the password needed for a user to bypass protection and change the workbook's structure.
Protection can also be set at the worksheet level to prevent unwanted data editing. For more information, see the Data protection section of the Work with worksheets using the Excel JavaScript API article.
For more information about workbook protection in Excel, see the Protect a workbook article.
Access document properties
Workbook objects have access to the Office file metadata, which is known as the document properties. The Workbook object's properties property is a DocumentProperties object containing these metadata values. The following example shows how to set the author property.
Custom properties
You can also define custom properties. The DocumentProperties object contains a custom property that represents a collection of key-value pairs for user-defined properties. The following example shows how to create a custom property named Introduction with the value "Hello", then retrieve it.
Worksheet-level custom properties
Custom properties can also be set at the worksheet level. These are similar to document-level custom properties, except that the same key can be repeated across different worksheets. The following example shows how to create a custom property named WorksheetGroup with the value "Alpha" on the current worksheet, then retrieve it.
Access document settings
A workbook's settings are similar to the collection of custom properties. The difference is settings are unique to a single Excel file and add-in pairing, whereas properties are solely connected to the file. The following example shows how to create and access a setting.
Access application culture settings
A workbook has language and culture settings that affect how certain data is displayed. These settings can help localize data when your add-in's users are sharing workbooks across different languages and cultures. Your add-in can use string parsing to localize the format of numbers, dates, and times based on the system culture settings so that each user sees data in their own culture's format.
Application.cultureInfo defines the system culture settings as a CultureInfo object. This contains settings like the numerical decimal separator or the date format.
Some culture settings can be changed through the Excel UI. The system settings are preserved in the CultureInfo object. Any local changes are kept as Application-level properties, such as Application.decimalSeparator .
The following sample changes the decimal separator character of a numerical string from a ',' to the character used by the system settings.
Add custom XML data to the workbook
Excel's Open XML .xlsx file format lets your add-in embed custom XML data in the workbook. This data persists with the workbook, independent of the add-in.
A workbook contains a CustomXmlPartCollection, which is a list of CustomXmlParts. These give access to the XML strings and a corresponding unique ID. By storing these IDs as settings, your add-in can maintain the keys to its XML parts between sessions.
The following samples show how to use custom XML parts. The first code block demonstrates how to embed XML data in the document. It stores a list of reviewers, then uses the workbook's settings to save the XML's id for future retrieval. The second block shows how to access that XML later. The "ContosoReviewXmlPartId" setting is loaded and passed to the workbook's customXmlParts . The XML data is then printed to the console.
CustomXMLPart.namespaceUri is only populated if the top-level custom XML element contains the xmlns attribute.
Control calculation behavior
Set calculation mode
By default, Excel recalculates formula results whenever a referenced cell is changed. Your add-in's performance may benefit from adjusting this calculation behavior. The Application object has a calculationMode property of type CalculationMode . It can be set to the following values.
- automatic : The default recalculation behavior where Excel calculates new formula results every time the relevant data is changed.
- automaticExceptTables : Same as automatic , except any changes made to values in tables are ignored.
- manual : Calculations only occur when the user or add-in requests them.
Set calculation type
The Application object provides a method to force an immediate recalculation. Application.calculate(calculationType) starts a manual recalculation based on the specified calculationType . The following values can be specified.
- full : Recalculate all formulas in all open workbooks, regardless of whether they have changed since the last recalculation.
- fullRebuild : Check dependent formulas, and then recalculate all formulas in all open workbooks, regardless of whether they have changed since the last recalculation.
- recalculate : Recalculate formulas that have changed (or been programmatically marked for recalculation) since the last calculation, and formulas dependent on them, in all active workbooks.
For more information about recalculation, see the Change formula recalculation, iteration, or precision article.
Temporarily suspend calculations
The Excel API also lets add-ins turn off calculations until RequestContext.sync() is called. This is done with suspendApiCalculationUntilNextSync() . Use this method when your add-in is editing large ranges without needing to access the data between edits.
Detect workbook activation
Your add-in can detect when a workbook is activated. A workbook becomes inactive when the user switches focus to another workbook, to another application, or (in Excel on the web) to another tab of the web browser. A workbook is activated when the user returns focus to the workbook. The workbook activation can trigger callback functions in your add-in, such as refreshing workbook data.
To detect when a workbook is activated, register an event handler for the onActivated event of a workbook. Event handlers for the onActivated event receive a WorkbookActivatedEventArgs object when the event fires.
The onActivated event doesn't detect when a workbook is opened. This event only detects when a user switches focus back to an already open workbook.
The following code sample shows how to register the onActivated event handler and set up a callback function.
Save the workbook
Workbook.save saves the workbook to persistent storage. The save method takes a single, optional saveBehavior parameter that can be one of the following values.
- Excel.SaveBehavior.save (default): The file is saved without prompting the user to specify file name and save location. If the file has not been saved previously, it's saved to the default location. If the file has been saved previously, it's saved to the same location.
- Excel.SaveBehavior.prompt : If file has not been saved previously, the user will be prompted to specify file name and save location. If the file has been saved previously, it will be saved to the same location and the user will not be prompted.
If the user is prompted to save and cancels the operation, save throws an exception.
Close the workbook
Workbook.close closes the workbook, along with add-ins that are associated with the workbook (the Excel application remains open). The close method takes a single, optional closeBehavior parameter that can be one of the following values.
В этой статье приведены примеры кода, в которых показано, как выполнять стандартные задачи для книг с использованием API JavaScript для Excel. Полный список свойств Workbook и методов, поддерживаемых объектом, см. в книге Объект (API JavaScript для Excel). В этой статье также рассматриваются действия на уровне книги, выполняемые с помощью объекта Application.
Объект Workbook — это точка входа для вашей надстройки для взаимодействия с Excel. Он поддерживает коллекции листов, таблиц, сводных таблиц и других элементов, через которые выполняется доступ и изменение данных Excel. Объект WorksheetCollection предоставляет надстройке доступ ко всем данным книги с помощью отдельных листов. В частности, он позволяет надстройке добавлять листы, перемещаться между ними и назначать обработчиков событий листа. В статье Работа с листами с использованием API JavaScript для Excel описывается способ доступа к листам и их изменение.
Получение активной ячейки или выделенного диапазона
Объект Workbook содержит два метода для получения диапазона ячеек, выделенных пользователем или надстройкой: getActiveCell() и getSelectedRange() . getActiveCell() получает активную ячейку из книги в виде объекта Range. В приведенном ниже примере показан вызов getActiveCell() с последующей печатью адреса ячейки в консоль.
Метод getSelectedRange() возвращает один диапазон, выделенный в настоящее время. Если выделено несколько диапазонов, возникает ошибка InvalidSelection. В приведенном ниже примере показан вызов метода getSelectedRange() , который затем устанавливает желтый цвет заливки для диапазона.
Создание книги
Ваша надстройка может создать новую книгу, отдельную от экземпляра Excel, в котором в настоящее время работает надстройка. Для этой цели в объекте Excel имеется метод createWorkbook . При вызове этого метода сразу открывается и отображается новая книга в новом экземпляре программы Excel. Ваша надстройка остается открытой и запущенной в предыдущей книге.
С помощью метода createWorkbook также можно создать копию существующей книги. Метод принимает в качестве необязательного параметра строковое представление XLSX-файла в кодировке base64. Полученная книга будет копией этого файла, предполагая, что строковый аргумент является допустимым XLSX-файлом.
Текущую книгу надстройки можно получить в качестве строки с кодом base64 с помощью нарезки файлов. Преобразование файла в нужную строку в кодировке base64 можно выполнить с помощью класса FileReader, как показано в приведенном ниже примере.
Вставка копии существующей книги в текущую книгу.
В предыдущем примере показана новая книга, которая была создана из существующей книги. Вы также можете скопировать отдельные части или всю существующую книгу целиком в книгу, привязанную в настоящее время к вашей надстройке. В книге используется метод insertWorksheetsFromBase64 вставки копий таблиц целевой книги в себя. Файл другой книги передается как строка с кодом base64, как и вызов Excel.createWorkbook .
Метод insertWorksheetsFromBase64 поддерживается для Excel на Windows, Mac и в Интернете. Он не поддерживается для iOS. Кроме того, Excel в Интернете этот метод не поддерживает исходные таблицы с элементами PivotTable, Chart, Comment или Slicer. Если эти объекты присутствуют, insertWorksheetsFromBase64 UnsupportedFeature метод возвращает ошибку в Excel в Интернете.
В следующем примере кода показано, как вставить в текущую книгу таблицы из другой книги. Этот пример FileReader кода сначала обрабатывает файл книги с объектом и извлекает строку с кодом base64, а затем вставляет эту строку с кодом base64 в текущую книгу. Новые листы вставляются после листа с именем Sheet1. Обратите внимание [] , что он передается в качестве параметра свойства InsertWorksheetOptions.sheetNamesToInsert . Это означает, что все таблицы из целевой книги вставляются в текущую книгу.
Защита структуры книги
Надстройка может управлять возможностью пользователя по изменению структуры книги. Свойство protection объекта Workbook является объектом WorkbookProtection с методом protect() . В приведенном ниже примере показан основной сценарий переключения защиты структуры книги.
Метод protect принимает необязательный строковый параметр. Эта строка представляет пароль, необходимый пользователю для обхода защиты и изменения структуры книги.
Защиту также можно установить на уровне книги, чтобы предотвратить нежелательные изменения данных. Дополнительные сведения см. в разделе Защита данных статьи Работа с листами с использованием API JavaScript для Excel.
Дополнительные сведения о защите книги в Excel см. в статье Защита книги.
Доступ к свойствам документов
Объекты Workbook имеют доступ к метаданным файлов Office, называемым свойствами документов. Свойство properties объекта Workbook является объектом DocumentProperties, содержащим эти значения метаданных. В следующем примере показано, как установить author свойство.
Настраиваемые свойства
Также можно установить настраиваемые свойства. Объект DocumentProperties содержит свойство custom , представляющее коллекцию пар "ключ-значение" для свойств, определяемых пользователем. В приведенном ниже примере показано, как создать настраиваемое свойство с именем Introduction со значением "Hello", а затем вызвать его.
Настраиваемые свойства на уровне таблицы
Настраиваемые свойства также можно установить на уровне таблицы. Они похожи на настраиваемые свойства на уровне документов, за исключением того, что один и тот же ключ может повторяться в разных таблицах. В следующем примере показано, как создать настраиваемую свойство WorksheetGroup со значением "Альфа" на текущем таблице, а затем получить его.
Доступ к параметрам документа
Параметры книги похожи на коллекцию настраиваемых свойств. Различие заключается в том, что параметры уникальны для одного файла Excel и соединения надстройки, а свойства связаны только с файлом. В приведенном ниже примере показано, как создать параметр и получить к нему доступ.
Доступ к настройкам культуры приложений
В книге есть языковые и культурные параметры, влияющие на отображение определенных данных. Эти параметры могут помочь локализовать данные, когда пользователи надстройки делятся книгами на разных языках и культурах. Ваша надстройка может использовать анализ строк для локализации формата чисел, дат и времени в зависимости от параметров культуры системы, чтобы каждый пользователь видел данные в формате своей культуры.
Application.cultureInfo определяет параметры культуры системы как объект CultureInfo . Это содержит параметры, такие как числовой десятичной сепаратор или формат даты.
Некоторые параметры культуры можно изменить с помощью Excel пользовательского интерфейса. Параметры системы сохраняются в объекте CultureInfo . Любые локальные изменения хранятся в качестве свойств уровня приложений, например Application.decimalSeparator .
В следующем примере изменяется десятичное сепараторное течение числовой строки с "," на символ, используемый в параметрах системы.
Добавление настраиваемых XML-данных в книгу
Формат файла Excel Open XML (XLSX) позволяет надстройке внедрить настраиваемые XML-данные в книгу. Эти данные сохраняются с книгой независимо от надстройки.
Книга содержит объект CustomXmlPartCollection, являющийся списком объектов CustomXmlParts. Они предоставляют доступ к строкам XML и соответствующему уникальному идентификатору. Сохраняя эти идентификаторы как параметры, надстройка может сохранять ключи к частям XML между сеансами.
В приведенных ниже примерах показано, как использовать настраиваемые части XML. В первом блоке кода показано, как внедрять XML-данные в документ. Выполняется сохранение списка проверяющих, а затем используются параметры книги, чтобы сохранить параметр id XML для будущих извлечений. Во втором блоке показано, как получить доступ к этим XML-данным позднее. Параметр "ContosoReviewXmlPartId" загружается и передается объекту customXmlParts книги. Данные XML затем печатаются в консоль.
CustomXMLPart.namespaceUri заполняется только в том случае, если настраиваемый XML-элемент верхнего уровня содержит атрибут xmlns .
Управление режимом вычислений
Установка режима вычислений
По умолчанию Excel пересчитывает результаты формул при каждом изменении ячейки из ссылки. Производительность вашей надстройки можно улучшить путем изменения режима вычислений. У объекта Application есть свойство calculationMode типа CalculationMode . Его можно установить к следующим значениям.
- automatic : режим пересчета по умолчанию, при котором Excel вычисляет новые результаты формулы при каждом изменении соответствующих данных.
- automaticExceptTables : аналогично automatic , за исключением того, что игнорируются любые изменения значений таблиц.
- manual : вычисления выполняются только в том случае, если пользователь или надстройка запрашивает их.
Установка типа вычислений
Объект Application предоставляет метод применения немедленного пересчета. Метод Application.calculate(calculationType) запускает ручной пересчет с учетом указанного типа calculationType . Можно укаварить следующие значения.
- full : пересчет всех формул во всех открытых книгах независимо от их изменения с прошлого пересчета.
- fullRebuild : проверка зависимых формул с последующим пересчетом всех формул во всех открытых книгах независимо от их изменения с прошлого пересчета.
- recalculate : пересчет формул, которые были изменены (или помечены программным путем для пересчета) с момента последнего вычисления, и зависимых от них формул во всех активных книгах.
Временная приостановка вычисления
API Excel также позволяет надстройкам отключить вычисления до вызова RequestContext.sync() . Для этого используется suspendApiCalculationUntilNextSync() . Используйте этот метод, если ваша надстройка изменяет большие диапазоны без необходимости доступа к данным между изменениями.
Обнаружение активации книг
Ваша надстройка может обнаруживать при активации книги. Книга становится неактивной, когда пользователь переключает фокус на другую книгу, на другое приложение или (в Excel в Интернете) на другую вкладку веб-браузера. Книга активируется , когда пользователь возвращает фокус в книгу. Активация книги может вызвать функции вызова в надстройке, например освежающие данные книги.
Чтобы определить, когда книга активирована, зарегистрируйте обработник событий для события onActivated книги. Обработчики событий для onActivated события получают объект WorkbookActivatedEventArgs при пожаре события.
Событие onActivated не определяет, когда книга открывается. Это событие обнаруживает только тогда, когда пользователь переключается на уже открытую книгу.
В следующем примере кода показано, как onActivated зарегистрировать обработник событий и настроить функцию вызова.
Сохраните книгу.
Workbook.save сохраняет книгу в постоянное хранилище. Метод save принимает один необязательный saveBehavior параметр, который может быть одним из следующих значений.
- Excel.SaveBehavior.save (по умолчанию): файл будет сохранен без предварительного запроса имени файла, а также место для сохранения. Если файл не был сохранен ранее, он будет сохранен в папке по умолчанию. Если файл уже был сохранен ранее, он будет сохранен в той же папке.
- Excel.SaveBehavior.prompt : если файл не был сохранен ранее, будет предложено ввести имя файла и место для сохранения. Если файл уже был сохранен ранее, он будет сохраняться в той же папке, и никаких дополнительных действий не потребуется.
Если пользователь при запрос на сохранение отменяет операцию, save выдает исключение.
Закрытие книги.
Workbook.close закрывает книгу, а также надстройки, связанные с книгой, (приложение Excel остается открытым). Метод close принимает один необязательный closeBehavior параметр, который может быть одним из следующих значений.
В этой статье описано, как создавать надстройки для Excel 2016 или более поздней версии с помощью API JavaScript для Excel. В статье приводятся основные принципы, которые являются фундаментальными при использовании этого API, а также рекомендации по выполнению определенных задач, например чтению данных из большого диапазона или записи данных в него, изменения всех ячеек в диапазоне и т. д.
Сведения об асинхронном типе интерфейсов API Excel и принципах их работы с книгой см. в статье Использование модели API, зависящей от приложения.
Интерфейсы API Office.js для Excel
Надстройка Excel взаимодействует с объектами в Excel с помощью API JavaScript для Office, включающего две объектных модели JavaScript:
API JavaScript для Excel. Появившийся в Office 2016 API JavaScript для Excel предоставляет строго типизированные объекты, с помощью которых можно получать доступ к листам, диапазонам, таблицам, диаграммам и другим объектам.
Общие API. Появившиеся в Office 2013 общие API можно использовать для доступа к таким компонентам, как пользовательский интерфейс, диалоговые окна и параметры клиентов, общие для нескольких типов приложений Office.
Скорее всего, вы будете разрабатывать большую часть функций надстроек для Excel 2016 или более поздней версии с помощью API JavaScript для Excel, но вам также потребуются объекты из общего API. Например:
-
. Объект Context представляет среду выполнения надстройки и предоставляет доступ к ключевым объектам API. Он состоит из данных конфигурации книги, например contentLanguage и officeTheme , а также предоставляет сведения о среде выполнения надстройки, например host и platform . Кроме того, он предоставляет метод requirements.isSetSupported() , с помощью которого можно проверить, поддерживается ли указанный набор обязательных элементов приложением Excel, в котором работает надстройка. . Объект Document предоставляет метод getFileAsync() , позволяющий скачать файл Excel, в котором работает надстройка.
На рисунке ниже показано, когда можно использовать API JavaScript для Excel или общие API.
Объектная модель для Excel
Чтобы понять API-интерфейсы Excel, вы должны понимать, как компоненты рабочей книги связаны друг с другом.
- Рабочая книга содержит одну или несколько рабочих листов.
- Рабочий лист содержит коллекции тех объектов данных, которые присутствуют на отдельном листе, и предоставляет доступ к ячейкам с помощью объектов Range.
- Range представляет группу смежных клеток.
- Диапазоны используются для создания и размещения таблиц, диаграмм, фигур и других объектов визуализации данных или организации.
- Рабочие книги содержат коллекции некоторых из этих объектов данных (таких как таблицы) для всей рабочей книги.
В API JavaScript для Excel нет объекта или класса Cell. Вместо этого API JavaScript для Excel определяет все ячейки Excel как объекты Range . Отдельные ячейки в пользовательском интерфейсе Excel преобразуются в объект Range с одной ячейкой в API JavaScript для Excel. Один объект Range также может содержать несколько смежных ячеек. Дополнительные сведения см. в статье Работа с ячейками с использованием API JavaScript для Excel.
Диапазоны
Диапазон — это группа непрерывных ячеек в рабочей книге. В надстройках обычно используется нотация в стиле A1 (например, B3 для отдельной ячейки в столбце B и строке 3 или C2:F4 для ячеек из столбцов с C по F и строк со 2-й по 4-ю) для определения диапазонов.
Диапазоны имеют три основных свойства: values , formulas и format . Эти свойства получают или устанавливают значения ячеек, формулы для оценки и визуальное форматирование ячеек.
Образец диапазона
В следующем примере показано, как создавать записи продаж. Эта функция использует объекты Range для установки значений, формул и форматов.
В этом примере создаются следующие данные в текущем листе.
Диаграммы, таблицы и другие объекты данных
API JavaScript для Excel могут создавать и управлять структурами данных и визуализациями в Excel. Таблицы и диаграммы являются двумя наиболее часто используемыми объектами, но API поддерживают сводные таблицы, фигуры, изображения и многое другое.
Создание таблицы
Создайте таблицы с помощью диапазонов данных. Форматирование и элементы управления таблицами (например, фильтры) автоматически применяются к диапазону.
В следующем примере создается таблица с использованием диапазонов из предыдущего примера.
Использование этого примера кода на листе с предыдущими данными создает следующую таблицу.
Создание диаграммы
Создайте диаграммы для визуализации данных в диапазоне. API поддерживают десятки разновидностей диаграмм, каждая из которых может быть настроена в соответствии с вашими потребностями.
В следующем примере создается простая гистограмма для трех элементов, которая размещается на 100 пикселей ниже верхней части листа.
Выполнение этого примера на листе с предыдущей таблицей создает следующую диаграмму.
Как использовать JavaScript для чтения и экспорта файлов Excel в чистом виде
кSheetJSПроизведено js-xlsx Это очень удобная библиотека инструментов, которой для чтения и экспорта в Excel нужен только чистый JS. Она имеет мощные функции, поддерживает множество форматов и поддерживает xls 、 xlsx 、 ods (Собственный формат файлов таблицы OpenOffice) и более десятка форматов. Вся эта статья основана на xlsx Возьмем, к примеру, формат.
1.1. Совместимость
1.2. Как пользоваться
dist В каталоге много JS-файлов, обычно используйте xlsx.core.min.js довольно, xlsx.full.min.js Он содержит все функциональные модули.
непосредственный script Этикетка может быть введена:
Чтение в Excel происходит в основном через XLSX.read(data, ); Способ достижения, ответьте на звонок WorkBook Основные значения типа следующие:
2.1. Получить объект книги
2.1.1. Чтение локальных файлов
Непосредственно по коду:
2.1.2. Чтение сетевых файлов
2.2. Подробная рабочая тетрадь
2.2.1. Workbook Object
workbook Что в нем, распечатаем и посмотрим:
можно увидеть, SheetNames В нем сохраняются все названия листов, а затем Sheets Конкретное содержимое каждого листа сохраняется (мы называем это Sheet Object ). Каждый sheet Через что-то вроде A1 Такое значение ключа сохраняет содержимое каждой ячейки, и мы называем его объектом ячейки ( Cell Object ):
2.2.2. Sheet Object
Каждый Sheet Object Представляет форму, если она не ! Те, что в начале, указывают на обычные cell , В противном случае это означает какое-то особое значение, а именно:
- sheet['!ref'] : Указывает диапазон всех ячеек, например, от A1 до F8, он записывается как A1:F8 ;
- sheet[!merges] : Хранить некоторую информацию о слиянии ячеек, это массив, каждый массив состоит из s с e Составьте композицию объекта, s Значит старт, e Означает конец, r Представляет строку, c Представляет столбец;
- и многое другое;
Что касается слияния ячеек, в принципе не проблема понять следующую картину:
Результаты приведены ниже:
2.2.3. Объект Cell
Каждая ячейка - это объект ( Cell Object ),Есть t 、 v 、 r 、 h 、 w И другие поля (см.Здесь):
- t: указывает тип содержимого, s Представляет тип строки, n Представляет числовой тип, b Представляет логический тип, d Представляет тип даты и т. Д.
- v: представляет исходное значение;
- f: представляет формулу, например B2+B3 ;
- h: HTML-контент
- w: форматированный контент
- r: богатый текстовый контент rich text
- и многое другое
2.2.4. Читать книгу
в соответствии с !ref Определите сферу применения Excel, а затем в соответствии с !merges Убедитесь, что ячейки объединены (если есть), и, наконец, выведите всю таблицу, что вызывает затруднения. К счастью, сам плагин уже написал инструмент XLSX.utils Для непосредственного использования, без нашего собственного обхода, выходные данные инструмента в основном включают следующее:
Некоторые из них обычно не используются, наиболее часто используются:
- XLSX.utils.sheet_to_csv : Создать формат CSV
- XLSX.utils.sheet_to_txt : Создать текстовый формат
- XLSX.utils.sheet_to_html : Создать формат HTML
- XLSX.utils.sheet_to_json : Выходной формат JSON
Чаще всего используются sheet_to_csv или же sheet_to_html , Формат, объединение ячеек и другая информация будут игнорироваться при преобразовании в CSV, поэтому сложные таблицы могут быть неприменимы. Если вы конвертируете в html, ячейки будут объединены, но результат будет Код вместо , Это неудобно, когда вам нужно внести некоторые изменения в форму, поэтому вам все равно придется использовать соответствующие инструменты в зависимости от ситуации.
Вот простой пример вывода результатов путем преобразования в CSV, вы можете щелкнуть здесь, чтобы просмотретьДЕМО онлайн:
Существует два типа экспорта: один основан на существующей модификации Excel, другой - нового поколения, первый относительно прост, здесь мы сосредоточимся на втором.
3.1. Создайте собственный рукописный код
Экспорт файла Excel, в основном, как его создать sheet , Здесь мы пишем простой пример csv для Excel:
Получите объект blob выше, и вы можете загрузить его напрямую, см. Мой предыдущийJS всплывает диалоговое окно загрузкиИнкапсулирован внутри openDownloadDialog метод:
Таким образом, окончательная загрузка выглядит следующим образом:
3.2. Используйте официальные инструменты для создания
На самом деле, нам не нужно писать ни один из вышеперечисленных кодов. Чиновник предоставил нам готовые инструменты, в основном в том числе:
- aoa_to_sheet : Этот класс инструментов является наиболее мощным и практичным.Преобразование двумерного массива в лист автоматически обработает числовые, строковые, логические, даты и другие типы данных;
- table_to_sheet : Поставить один table dom Непосредственно преобразованный в лист, он будет автоматически распознан colspan с rowspan И преобразовать его в соответствующую ячейку и объединить;
- json_to_sheet : Преобразовать массив объектов в лист;
table_to_sheet Еще проще, прямо XLSX.utils.table_to_sheet($('table')[0]) Может
3.3. Решение проблемы слияния ячеек
Вообще говоря, интерфейсное поколение excel Вместо csv Основная цель - решить проблему, заключающуюся в том, что csv не может выполнить слияние ячеек. В противном случае было бы неплохо напрямую экспортировать файл csv. Зачем вводить несколько сотен килобайт плагинов.
Предположим, мы хотим сгенерировать файл Excel в следующем формате, где A1-C1 Чтобы объединить ячейки:
код показан ниже:
Стоит обратить внимание на использование объединенных ячеек. null Зарезервируйте место, иначе следующий контент (в этом примере четвертый столбец Дополнительная информация ) Будет перезаписан.
3.4. Пользовательский стиль
Обычная версия не поддерживает определение шрифтов, цветов, цветов фона и т. Д., Вы можете использовать ее, если вам нужна эта функция.профессиональная версия, Вроде заряжено, потому что официальный сайт не видел адреса загрузки.
Читайте также: