2022-05-16 03:26:04 +00:00
|
|
|
---
|
2022-08-13 22:01:26 +00:00
|
|
|
sidebar_position: 3
|
2022-05-16 03:26:04 +00:00
|
|
|
---
|
|
|
|
|
|
|
|
# Roadmap
|
|
|
|
|
|
|
|
Most scenarios involving spreadsheets and data can be divided into 5 parts:
|
|
|
|
|
|
|
|
1) **Acquire Data**: Data may be stored anywhere: local or remote files,
|
|
|
|
databases, HTML TABLE, or even generated programmatically in the web browser.
|
|
|
|
|
|
|
|
2) **Extract Data**: For spreadsheet files, this involves parsing raw bytes to
|
|
|
|
read the cell data. For general JS data, this involves reshaping the data.
|
|
|
|
|
|
|
|
3) **Process Data**: From generating summary statistics to cleaning data
|
|
|
|
records, this step is the heart of the problem.
|
|
|
|
|
|
|
|
4) **Package Data**: This can involve making a new spreadsheet or serializing
|
|
|
|
with `JSON.stringify` or writing XML or simply flattening data for UI tools.
|
|
|
|
|
|
|
|
5) **Release Data**: Spreadsheet files can be uploaded to a server or written
|
|
|
|
locally. Data can be presented to users in an HTML TABLE or data grid.
|
|
|
|
|
|
|
|
A common problem involves generating a valid spreadsheet export from data stored
|
2023-06-20 01:21:34 +00:00
|
|
|
in an HTML table.
|
|
|
|
|
|
|
|
```mermaid
|
|
|
|
flowchart LR
|
|
|
|
server[(Backend\nServer)]
|
|
|
|
html{{HTML\nTABLE}}
|
|
|
|
wb(((SheetJS\nWorkbook)))
|
|
|
|
wb2(((Modified\nWorkbook)))
|
|
|
|
file[(workbook\nfile)]
|
|
|
|
server --> |"Get Table (1)\n."| html
|
|
|
|
html --> |"Parse Table (2)\n`table_to_book`"| wb
|
|
|
|
wb --> |"Add data (3)\n`sheet_add_aoa`"| wb2
|
|
|
|
wb2 --> |"Export file (4,5)\n`writeFile`"| file
|
|
|
|
```
|
|
|
|
|
|
|
|
In this example, an HTML TABLE on the page will be scraped, a row will be added
|
|
|
|
to the bottom with the date of the report, and a new file will be generated and
|
|
|
|
downloaded locally. `XLSX.writeFile` takes care of packaging the data and
|
|
|
|
attempting a local download:
|
2022-05-16 03:26:04 +00:00
|
|
|
|
|
|
|
```js
|
|
|
|
// Acquire Data (reference to the HTML table)
|
|
|
|
var table_elt = document.getElementById("my-table-id");
|
|
|
|
|
|
|
|
// Extract Data (create a workbook object from the table)
|
|
|
|
var workbook = XLSX.utils.table_to_book(table_elt);
|
|
|
|
|
|
|
|
// Process Data (add a new row)
|
|
|
|
var ws = workbook.Sheets["Sheet1"];
|
|
|
|
XLSX.utils.sheet_add_aoa(ws, [["Created "+new Date().toISOString()]], {origin:-1});
|
|
|
|
|
|
|
|
// Package and Release Data (`writeFile` tries to write and save an XLSB file)
|
|
|
|
XLSX.writeFile(workbook, "Report.xlsb");
|
|
|
|
```
|
|
|
|
|
|
|
|
This library tries to simplify steps 2 and 4 with functions to extract useful
|
|
|
|
data from spreadsheet files (`read` / `readFile`) and generate new spreadsheet
|
|
|
|
files from data (`write` / `writeFile`). Additional utility functions like
|
|
|
|
`table_to_book` work with other common data sources like HTML tables.
|
|
|
|
|
|
|
|
This documentation and various demo projects cover a number of common scenarios
|
|
|
|
and approaches for steps 1 and 5.
|
|
|
|
|
|
|
|
Utility functions help with step 3.
|
|
|
|
|
|
|
|
## Highlights
|
|
|
|
|
2023-06-20 01:21:34 +00:00
|
|
|
["Demos"](/docs/demos) describes special deployments using SheetJS in tandem with
|
|
|
|
other tools and libraries.
|
|
|
|
|
2022-10-30 05:45:37 +00:00
|
|
|
["Data Import"](/docs/solutions/input) describes solutions for common data import
|
2022-05-16 03:26:04 +00:00
|
|
|
scenarios.
|
|
|
|
|
2022-10-30 05:45:37 +00:00
|
|
|
["Data Export"](/docs/solutions/output) describes solutions for common data export
|
2022-05-16 03:26:04 +00:00
|
|
|
scenarios.
|
|
|
|
|
2022-10-30 05:45:37 +00:00
|
|
|
["Data Processing"](/docs/solutions/processing) describes solutions for common
|
2022-05-16 03:26:04 +00:00
|
|
|
workbook processing and manipulation scenarios.
|
|
|
|
|
2022-10-30 05:45:37 +00:00
|
|
|
["Utility Functions"](/docs/api/utilities) details utility functions for
|
2022-05-16 03:26:04 +00:00
|
|
|
translating JSON Arrays and other common JS structures into worksheet objects.
|