forked from sheetjs/docs.sheetjs.com
		
	
		
			
	
	
		
			68 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			68 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|  | --- | ||
|  | sidebar_position: 1 | ||
|  | --- | ||
|  | 
 | ||
|  | # 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 | ||
|  | in an HTML table.  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: | ||
|  | 
 | ||
|  | ```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
 | ||
|  | 
 | ||
|  | ["Data Import"](../solutions/input) describes solutions for common data import | ||
|  | scenarios. | ||
|  | 
 | ||
|  | ["Data Export"](../solutions/output) describes solutions for common data export | ||
|  | scenarios. | ||
|  | 
 | ||
|  | ["Data Processing"](../solutions/processing) describes solutions for common | ||
|  | workbook processing and manipulation scenarios. | ||
|  | 
 | ||
|  | ["Utility Functions"](../api/utilities) details utility functions for | ||
|  | translating JSON Arrays and other common JS structures into worksheet objects. |