forked from sheetjs/docs.sheetjs.com
		
	ssf
This commit is contained in:
		
							parent
							
								
									66c787222e
								
							
						
					
					
						commit
						4b984058b5
					
				| @ -4,7 +4,6 @@ pagination_prev: demos/net/index | ||||
| pagination_next: demos/mobile/index | ||||
| --- | ||||
| 
 | ||||
| import DocCardList from '@theme/DocCardList'; | ||||
| import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; | ||||
| 
 | ||||
| With the advent of server-side frameworks and content management systems, it is | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| { | ||||
|   "label": "Common Use Cases", | ||||
|   "collapsed": true, | ||||
|   "position": 6 | ||||
|   "position": 5 | ||||
| } | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| { | ||||
|   "label": "SheetJS Data Model", | ||||
|   "position": 7 | ||||
|   "position": 6 | ||||
| } | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| { | ||||
|   "label": "API Reference", | ||||
|   "position": 8 | ||||
|   "position": 7 | ||||
| } | ||||
|  | ||||
| @ -154,6 +154,6 @@ ESM helper functions are described in the ["NodeJS" Installation section](/docs/ | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
| `XLSX.SSF` is an embedded version of the [format library](https://git.sheetjs.com/sheetjs/sheetjs/src/branch/master/packages/ssf). | ||||
| `XLSX.SSF` is an embedded version of the [format library](/docs/constellation/ssf). | ||||
| 
 | ||||
| `XLSX.CFB` is an embedded version of the [container library](https://git.sheetjs.com/sheetjs/js-cfb). | ||||
|  | ||||
							
								
								
									
										26
									
								
								docz/docs/09-constellation/01-ssf.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										26
									
								
								docz/docs/09-constellation/01-ssf.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,26 @@ | ||||
| --- | ||||
| title: SSF Number Formatter | ||||
| --- | ||||
| 
 | ||||
| As explained in ["Number Formats"](/docs/csf/features/nf), modern spreadsheet | ||||
| file formats separate "content" from "presentation". Instead of storing a | ||||
| formatted value like `$3.50`, applications will store the underlying value | ||||
| (`3.50`) and the number format (`$0.00`). Parsers are expected to render values. | ||||
| 
 | ||||
| The SheetJS `SSF` ("SpreadSheet Formatter") library formats numbers according | ||||
| to the number formatting rules defined in Excel and other spreadsheet software[^1] | ||||
| 
 | ||||
| A version of the library ships with the main file processing library. It is | ||||
| deeply integrated in SheetJS CE API functions including `read`[^2], `write`[^3], | ||||
| and `sheet_to_json`[^4]. | ||||
| 
 | ||||
| The library is also available for standalone use on the SheetJS CDN[^5]. | ||||
| 
 | ||||
| The source code and project documentation is hosted on the SheetJS git server at | ||||
| <https://git.sheetjs.com/sheetjs/sheetjs/src/branch/master/packages/ssf> | ||||
| 
 | ||||
| [^1]: The number formatting rules are sketched in ECMA-376. A rough grammar is defined in the MS-XLS specification. | ||||
| [^2]: See [`read` in "Reading Files"](/docs/api/parse-options) | ||||
| [^3]: See [`write` in "Writing Files"](/docs/api/write-options) | ||||
| [^4]: See [`sheet_to_json` in "Utilities"](/docs/api/utilities/array#array-output) | ||||
| [^5]: See <https://cdn.sheetjs.com/ssf/> for more details. | ||||
							
								
								
									
										4
									
								
								docz/docs/09-constellation/_category_.json
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										4
									
								
								docz/docs/09-constellation/_category_.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| { | ||||
|   "label": "Constellation", | ||||
|   "position": 9 | ||||
| } | ||||
							
								
								
									
										20
									
								
								docz/docs/09-constellation/index.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										20
									
								
								docz/docs/09-constellation/index.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| --- | ||||
| title: SheetJS Constellation | ||||
| pagination_prev: miscellany/index | ||||
| --- | ||||
| 
 | ||||
| import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; | ||||
| 
 | ||||
| Many related projects have been separated into dedicated libraries. | ||||
| 
 | ||||
| ### Contents | ||||
| 
 | ||||
| <ul>{useCurrentSidebarCategory().items.map(globalThis.lambda = (item, index) => { | ||||
|   const listyle = (item.customProps?.icon) ? { | ||||
|     listStyleImage: `url("${item.customProps.icon}")` | ||||
|   } : {}; | ||||
|   return (<li style={listyle} {...(item.customProps?.class ? {className: item.customProps.class}: {})}> | ||||
|     <a href={item.href}>{item.label}</a>{item.customProps?.summary && (" - " + item.customProps.summary)} | ||||
|     <ul>{item.items && item.items.map(lambda)}</ul> | ||||
|   </li>); | ||||
| })}</ul> | ||||
| @ -1,15 +1,10 @@ | ||||
| --- | ||||
| title: File Formats | ||||
| sidebar_position: 1 | ||||
| hide_table_of_contents: true | ||||
| pagination_prev: api/utilities/index | ||||
| --- | ||||
| 
 | ||||
| # File Formats | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| SheetJS supports reading and writing a number of spreadsheet file formats. | ||||
| 
 | ||||
| | Format                                                       | Read  | Write | | ||||
| |:-------------------------------------------------------------|:-----:|:-----:| | ||||
| @ -45,8 +40,16 @@ pagination_prev: api/utilities/index | ||||
| | Rich Text Format tables (RTF)                                |   ✔   |   ✔   | | ||||
| | Ethercalc Record Format (ETH)                                |   ✔   |   ✔   | | ||||
| 
 | ||||
| Features not supported by a given file format will not be written.  Formats with | ||||
| range limits will be silently truncated: | ||||
|  | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| Features not supported by a given file format will not be written. | ||||
| 
 | ||||
| ## Worksheet Range Limits | ||||
| 
 | ||||
| Formats with range limits will be silently truncated. For example, the Lotus WKS | ||||
| format has a limit of 2048 rows, so data after the 2048th row will not be saved. | ||||
| 
 | ||||
| | Format                                    | Last Cell  | Max Cols | Max Rows | | ||||
| |:------------------------------------------|:-----------|---------:|---------:| | ||||
| @ -65,7 +68,9 @@ range limits will be silently truncated: | ||||
| Excel 2003 SpreadsheetML range limits are governed by the version of Excel and | ||||
| are not enforced by the writer. | ||||
| 
 | ||||
| ### Excel 2007+ XML (XLSX/XLSM) | ||||
| ## Common File Formats | ||||
| 
 | ||||
| #### Excel 2007+ XML (XLSX/XLSM) | ||||
| 
 | ||||
| XLSX and XLSM files are ZIP containers containing a series of XML files in | ||||
| accordance with the Open Packaging Conventions (OPC).  The XLSM format, almost | ||||
| @ -75,7 +80,7 @@ The format is standardized in `ECMA-376` and `ISO/IEC 29500`.  Excel does not | ||||
| follow the specification, and there are additional documents discussing how | ||||
| Excel deviates from the specification. | ||||
| 
 | ||||
| ### Excel 2.0-95 (BIFF2/BIFF3/BIFF4/BIFF5) | ||||
| #### Excel 2.0-95 (BIFF2/BIFF3/BIFF4/BIFF5) | ||||
| 
 | ||||
| BIFF 2/3 XLS are single-sheet streams of binary records.  Excel 4 introduced | ||||
| the concept of a workbook (`XLW` files) but also had single-sheet `XLS` format. | ||||
| @ -92,7 +97,7 @@ files in these formats, so record lengths and fields were determined by writing | ||||
| in all of the supported formats and comparing files.  Excel 2016 can generate | ||||
| BIFF5 files, enabling a full suite of file tests starting from XLSX or BIFF2. | ||||
| 
 | ||||
| ### Excel 97-2004 Binary (BIFF8) | ||||
| #### Excel 97-2004 Binary (BIFF8) | ||||
| 
 | ||||
| BIFF8 exclusively uses the Compound File Binary container format, splitting some | ||||
| content into streams within the file.  At its core, it still uses an extended | ||||
| @ -101,14 +106,14 @@ version of the binary record format from older versions of BIFF. | ||||
| The `MS-XLS` specification covers the basics of the file format, and other | ||||
| specifications expand on serialization of features like properties. | ||||
| 
 | ||||
| ### Excel 2003-2004 (SpreadsheetML) | ||||
| #### Excel 2003-2004 (SpreadsheetML) | ||||
| 
 | ||||
| Predating XLSX, SpreadsheetML files are simple XML files.  There is no official | ||||
| and comprehensive specification, although MS has released documentation on the | ||||
| format.  Since Excel 2016 can generate SpreadsheetML files, mapping features is | ||||
| pretty straightforward. | ||||
| 
 | ||||
| ### Excel 2007+ Binary (XLSB, BIFF12) | ||||
| #### Excel 2007+ Binary (XLSB, BIFF12) | ||||
| 
 | ||||
| Introduced in parallel with XLSX, the XLSB format combines the BIFF architecture | ||||
| with the content separation and ZIP container of XLSX.  For the most part nodes | ||||
| @ -117,7 +122,7 @@ in an XLSX sub-file can be mapped to XLSB records in a corresponding sub-file. | ||||
| The `MS-XLSB` specification covers the basics of the file format, and other | ||||
| specifications expand on serialization of features like properties. | ||||
| 
 | ||||
| ### Delimiter-Separated Values (CSV/TXT) | ||||
| #### Delimiter-Separated Values (CSV/TXT) | ||||
| 
 | ||||
| Excel CSV deviates from RFC4180 in a number of important ways.  The generated | ||||
| CSV files should generally work in Excel although they may not work in RFC4180 | ||||
| @ -132,7 +137,18 @@ will be proactively reinterpreted as CSV.  There are some files with semicolon | ||||
| delimiter that align with a valid SYLK file.  For the broadest compatibility, | ||||
| all cells with the value of `ID` are automatically wrapped in double-quotes. | ||||
| 
 | ||||
| ### Miscellaneous Workbook Formats | ||||
| #### HTML | ||||
| 
 | ||||
| Excel HTML worksheets include special metadata encoded in styles.  For example, | ||||
| `mso-number-format` is a localized string containing the number format.  Despite | ||||
| the metadata the output is valid HTML, although it does accept bare `&` symbols. | ||||
| 
 | ||||
| The writer adds type metadata to the TD elements via the `t` tag.  The parser | ||||
| looks for those tags and overrides the default interpretation. For example, text | ||||
| like `<td>12345</td>` will be parsed as numbers but `<td t="s">12345</td>` will | ||||
| be parsed as text. | ||||
| 
 | ||||
| ## Miscellaneous Workbook Formats | ||||
| 
 | ||||
| Support for other formats is generally far behind XLS/XLSB/XLSX support, due in | ||||
| part to a lack of publicly available documentation.  Test files were produced in | ||||
| @ -202,16 +218,16 @@ is in the names of tags and attributes. | ||||
| ET is the native format for WPS Office Spreadsheet.  It extends the BIFF8 XLS | ||||
| format with proprietary extensions. | ||||
| 
 | ||||
| ### Miscellaneous Worksheet Formats | ||||
| ## Miscellaneous Worksheet Formats | ||||
| 
 | ||||
| Many older formats supported only one worksheet: | ||||
| 
 | ||||
| #### dBASE and Visual FoxPro (DBF) | ||||
| 
 | ||||
| DBF is really a typed table format: each column can only hold one data type and | ||||
| each record omits type information.  The parser generates a header row and | ||||
| inserts records starting at the second row of the worksheet.  The writer makes | ||||
| files compatible with Visual FoxPro extensions. | ||||
| DBF is a typed table format: each column can only hold one data type and each | ||||
| record omits type information.  The parser generates a header row and inserts | ||||
| records starting at the second row of the worksheet.  The writer makes files | ||||
| compatible with Visual FoxPro extensions. | ||||
| 
 | ||||
| Multi-file extensions like external memos and tables are currently unsupported, | ||||
| limited by the general ability to read arbitrary files in the web browser.  The | ||||
| @ -241,17 +257,6 @@ behavior from Excel.  In particular, Excel extends DIF in incompatible ways: | ||||
| - DIF technically has no support for formulae, but Excel will automatically | ||||
|   convert plain formulae.  Array formulae are not preserved. | ||||
| 
 | ||||
| #### HTML | ||||
| 
 | ||||
| Excel HTML worksheets include special metadata encoded in styles.  For example, | ||||
| `mso-number-format` is a localized string containing the number format.  Despite | ||||
| the metadata the output is valid HTML, although it does accept bare `&` symbols. | ||||
| 
 | ||||
| The writer adds type metadata to the TD elements via the `t` tag.  The parser | ||||
| looks for those tags and overrides the default interpretation. For example, text | ||||
| like `<td>12345</td>` will be parsed as numbers but `<td t="s">12345</td>` will | ||||
| be parsed as text. | ||||
| 
 | ||||
| #### Rich Text Format (RTF) | ||||
| 
 | ||||
| Excel RTF worksheets are stored in clipboard when copying cells or ranges from a | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| { | ||||
|   "label": "Miscellany", | ||||
|   "position": 9 | ||||
|   "position": 8 | ||||
| } | ||||
|  | ||||
							
								
								
									
										16
									
								
								docz/docs/09-miscellany/index.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										16
									
								
								docz/docs/09-miscellany/index.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | ||||
| --- | ||||
| title: Miscellany | ||||
| pagination_next: constellation/index | ||||
| --- | ||||
| 
 | ||||
| import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; | ||||
| 
 | ||||
| <ul>{useCurrentSidebarCategory().items.map(globalThis.lambda = (item, index) => { | ||||
|   const listyle = (item.customProps?.icon) ? { | ||||
|     listStyleImage: `url("${item.customProps.icon}")` | ||||
|   } : {}; | ||||
|   return (<li style={listyle} {...(item.customProps?.class ? {className: item.customProps.class}: {})}> | ||||
|     <a href={item.href}>{item.label}</a>{item.customProps?.summary && (" - " + item.customProps.summary)} | ||||
|     <ul>{item.items && item.items.map(lambda)}</ul> | ||||
|   </li>); | ||||
| })}</ul> | ||||
| @ -181,6 +181,7 @@ const config = { | ||||
|         { from: '/docs/demos/vue', to: '/docs/demos/frontend/vue/' }, | ||||
|         { from: '/docs/demos/bundler', to: '/docs/demos/frontend/bundler/' }, | ||||
|         { from: '/docs/demos/legacy', to: '/docs/demos/frontend/legacy/' }, | ||||
|         { from: '/docs/getting-started/demos/legacy', to: '/docs/demos/frontend/legacy/' }, | ||||
|         /* cloud */ | ||||
|         { from: '/docs/demos/salesforce', to: '/docs/demos/cloud/salesforce/' }, | ||||
|         { from: '/docs/demos/aws', to: '/docs/demos/cloud/aws/' }, | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user