clarify Multiplan DOS support

This commit is contained in:
SheetJS 2022-05-05 02:27:25 -04:00
parent f38191d266
commit cfe4da2e56
7 changed files with 43 additions and 19 deletions

1
.gitignore vendored

@ -29,6 +29,7 @@ tmp
*.[rR][tT][fF]
*.[eE][tT][hH]
*.[nN][uU][mM][bB][eE][rR][sS]
*.[mM][oO][dD]
*.123
*.htm
*.html

@ -19,11 +19,12 @@ tmp
*.[pP][dD][fF]
*.[sS][lL][kK]
*.socialcalc
*.[xX][lL][sSwWcCaAtTmM]
*.[xX][lL][sSwWcCaAtTmMrR]
*.[xX][lL][sSaAtT][xXmMbB]
*.[oO][dD][sS]
*.[fF][oO][dD][sS]
*.[xX][mM][lL]
*.[xX][lL][mM][lL]
*.[uU][oO][sS]
*.[wW][kKqQbB][S1234567890]
*.[qQ][pP][wW]
@ -32,6 +33,7 @@ tmp
*.[rR][tT][fF]
*.[eE][tT][hH]
*.[nN][uU][mM][bB][eE][rR][sS]
*.[mM][oO][dD]
*.123
*.htm
*.html

@ -4061,7 +4061,7 @@ Despite the library name `xlsx`, it supports numerous spreadsheet file formats:
| Excel 5.0/95 (XLS BIFF5) | ✔ | ✔ |
| Excel 4.0 (XLS/XLW BIFF4) | ✔ | ✔ |
| Excel 3.0 (XLS BIFF3) | ✔ | ✔ |
| Excel 2.0/2.1 (XLS BIFF2) | ✔ | ✔ |
| Excel 2.0/2.1 / Multiplan 4.x DOS (XLS BIFF2) | ✔ | ✔ |
| **Excel Supported Text Formats** |:-----:|:-----:|
| Delimiter-Separated Values (CSV/TXT) | ✔ | ✔ |
| Data Interchange Format (DIF) | ✔ | ✔ |
@ -4126,6 +4126,11 @@ the concept of a workbook (`XLW` files) but also had single-sheet `XLS` format.
The structure is largely similar to the Lotus 1-2-3 file formats. BIFF5/8/12
extended the format in various ways but largely stuck to the same record format.
Multiplan 4 "Normal" files are identical in structure to BIFF2 and use the same
cell value records. There are some different record types for more advanced
features like Print Settings. The BIFF2 writer generates files that can be read
in Multiplan 4 and the parser can extract values from "Normal" files.
There is no official specification for any of these formats. Excel 95 can write
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
@ -4252,11 +4257,8 @@ reader understands DBF Level 7 extensions like DATETIME.
- **Symbolic Link (SYLK)**
There is no real documentation. All knowledge was gathered by saving files in
various versions of Excel to deduce the meaning of fields. Notes:
- Plain formulae are stored in the RC form.
- Column widths are rounded to integral characters.
<https://oss.sheetjs.com/notes/sylk/> is an informal specification based on our
experimentation and previous documentation efforts.
- **Lotus Formatted Text (PRN)**

@ -1319,6 +1319,16 @@ var XLSRecordEnum = {
/*::[*/0x08cb/*::]*/: { /* n:"CrtCoopt", */ },
/*::[*/0x08d6/*::]*/: { /* n:"FRTArchId$", */ r:12 },
/* --- multiplan 4 records --- */
/*::[*/0x0065/*::]*/: { /* n:"", */ }, // one per window
/*::[*/0x0066/*::]*/: { /* n:"", */ }, // calc settings
/*::[*/0x0069/*::]*/: { /* n:"", */ }, // print header
/*::[*/0x006a/*::]*/: { /* n:"", */ }, // print footer
/*::[*/0x006b/*::]*/: { /* n:"", */ }, // print settings
/*::[*/0x006d/*::]*/: { /* n:"", */ }, // one per window
/*::[*/0x0070/*::]*/: { /* n:"", */ }, // includes default col width
/*::[*/0x0072/*::]*/: { /* n:"", */ }, // includes selected cell
/*::[*/0x7262/*::]*/: {}
};

@ -107,6 +107,11 @@ function readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {
case 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break;
case 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);
case 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error("PNG Image File is not a spreadsheet"); break;
case 0x08: if(n[1] === 0xE7) throw new Error("Unsupported Multiplan 1.x file!"); break;
case 0x0C:
if(n[1] === 0xEC) throw new Error("Unsupported Multiplan 2.x file!");
if(n[1] === 0xED) throw new Error("Unsupported Multiplan 3.x file!");
break;
}
if(DBF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);
return read_prn(data, d, o, str);

@ -12,7 +12,7 @@ Despite the library name `xlsx`, it supports numerous spreadsheet file formats:
| Excel 5.0/95 (XLS BIFF5) | ✔ | ✔ |
| Excel 4.0 (XLS/XLW BIFF4) | ✔ | ✔ |
| Excel 3.0 (XLS BIFF3) | ✔ | ✔ |
| Excel 2.0/2.1 (XLS BIFF2) | ✔ | ✔ |
| Excel 2.0/2.1 / Multiplan 4.x DOS (XLS BIFF2) | ✔ | ✔ |
| **Excel Supported Text Formats** |:-----:|:-----:|
| Delimiter-Separated Values (CSV/TXT) | ✔ | ✔ |
| Data Interchange Format (DIF) | ✔ | ✔ |
@ -77,6 +77,11 @@ the concept of a workbook (`XLW` files) but also had single-sheet `XLS` format.
The structure is largely similar to the Lotus 1-2-3 file formats. BIFF5/8/12
extended the format in various ways but largely stuck to the same record format.
Multiplan 4 "Normal" files are identical in structure to BIFF2 and use the same
cell value records. There are some different record types for more advanced
features like Print Settings. The BIFF2 writer generates files that can be read
in Multiplan 4 and the parser can extract values from "Normal" files.
There is no official specification for any of these formats. Excel 95 can write
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
@ -203,11 +208,8 @@ reader understands DBF Level 7 extensions like DATETIME.
- **Symbolic Link (SYLK)**
There is no real documentation. All knowledge was gathered by saving files in
various versions of Excel to deduce the meaning of fields. Notes:
- Plain formulae are stored in the RC form.
- Column widths are rounded to integral characters.
<https://oss.sheetjs.com/notes/sylk/> is an informal specification based on our
experimentation and previous documentation efforts.
- **Lotus Formatted Text (PRN)**

@ -3836,7 +3836,7 @@ Despite the library name `xlsx`, it supports numerous spreadsheet file formats:
| Excel 5.0/95 (XLS BIFF5) | ✔ | ✔ |
| Excel 4.0 (XLS/XLW BIFF4) | ✔ | ✔ |
| Excel 3.0 (XLS BIFF3) | ✔ | ✔ |
| Excel 2.0/2.1 (XLS BIFF2) | ✔ | ✔ |
| Excel 2.0/2.1 / Multiplan 4.x DOS (XLS BIFF2) | ✔ | ✔ |
| **Excel Supported Text Formats** |:-----:|:-----:|
| Delimiter-Separated Values (CSV/TXT) | ✔ | ✔ |
| Data Interchange Format (DIF) | ✔ | ✔ |
@ -3899,6 +3899,11 @@ the concept of a workbook (`XLW` files) but also had single-sheet `XLS` format.
The structure is largely similar to the Lotus 1-2-3 file formats. BIFF5/8/12
extended the format in various ways but largely stuck to the same record format.
Multiplan 4 "Normal" files are identical in structure to BIFF2 and use the same
cell value records. There are some different record types for more advanced
features like Print Settings. The BIFF2 writer generates files that can be read
in Multiplan 4 and the parser can extract values from "Normal" files.
There is no official specification for any of these formats. Excel 95 can write
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
@ -4025,11 +4030,8 @@ reader understands DBF Level 7 extensions like DATETIME.
- **Symbolic Link (SYLK)**
There is no real documentation. All knowledge was gathered by saving files in
various versions of Excel to deduce the meaning of fields. Notes:
- Plain formulae are stored in the RC form.
- Column widths are rounded to integral characters.
<https://oss.sheetjs.com/notes/sylk/> is an informal specification based on our
experimentation and previous documentation efforts.
- **Lotus Formatted Text (PRN)**