diff --git a/bits/77_parsetab.js b/bits/77_parsetab.js index 505e3b8..f52a20e 100644 --- a/bits/77_parsetab.js +++ b/bits/77_parsetab.js @@ -844,12 +844,10 @@ var XLSBRecordEnum = { var XLSBRE = evert_key(XLSBRecordEnum, 'n'); XLSBRE["BrtFRTArchID$"] = 0x0010; -/* [MS-XLS] 2.3 Record Enumeration */ +/* [MS-XLS] 2.3 Record Enumeration (and other sources) */ var XLSRecordEnum = { - /*::[*/0x0003/*::]*/: { n:"BIFF2NUM", f:parse_BIFF2NUM }, - /*::[*/0x0004/*::]*/: { n:"BIFF2STR", f:parse_BIFF2STR }, + /* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */ /*::[*/0x0006/*::]*/: { n:"Formula", f:parse_Formula }, - /*::[*/0x0009/*::]*/: { n:'BOF', f:parse_BOF }, /*::[*/0x000a/*::]*/: { n:'EOF', f:parsenoop2 }, /*::[*/0x000c/*::]*/: { n:"CalcCount", f:parseuint16 }, /*::[*/0x000d/*::]*/: { n:"CalcMode", f:parseuint16 }, @@ -870,7 +868,6 @@ var XLSRecordEnum = { /*::[*/0x001d/*::]*/: { n:"Selection" }, /*::[*/0x0022/*::]*/: { n:"Date1904", f:parsebool }, /*::[*/0x0023/*::]*/: { n:"ExternName", f:parse_ExternName }, - /*::[*/0x0024/*::]*/: { n:"COLWIDTH" }, /*::[*/0x0026/*::]*/: { n:"LeftMargin", f:parse_Xnum }, /*::[*/0x0027/*::]*/: { n:"RightMargin", f:parse_Xnum }, /*::[*/0x0028/*::]*/: { n:"TopMargin", f:parse_Xnum }, @@ -1040,7 +1037,6 @@ var XLSRecordEnum = { /*::[*/0x0203/*::]*/: { n:"Number", f:parse_Number }, /*::[*/0x0204/*::]*/: { n:"Label", f:parse_Label }, /*::[*/0x0205/*::]*/: { n:"BoolErr", f:parse_BoolErr }, - /*::[*/0x0206/*::]*/: { n:"Formula", f:parse_Formula }, /*::[*/0x0207/*::]*/: { n:"String", f:parse_String }, /*::[*/0x0208/*::]*/: { n:'Row', f:parse_Row }, /*::[*/0x020b/*::]*/: { n:"Index" }, @@ -1050,7 +1046,6 @@ var XLSRecordEnum = { /*::[*/0x023e/*::]*/: { n:"Window2", f:parse_Window2 }, /*::[*/0x027e/*::]*/: { n:"RK", f:parse_RK }, /*::[*/0x0293/*::]*/: { n:"Style" }, - /*::[*/0x0406/*::]*/: { n:"Formula", f:parse_Formula }, /*::[*/0x0418/*::]*/: { n:"BigName" }, /*::[*/0x041e/*::]*/: { n:"Format", f:parse_Format }, /*::[*/0x043c/*::]*/: { n:"ContinueBigName" }, @@ -1207,20 +1202,49 @@ var XLSRecordEnum = { /*::[*/0x1068/*::]*/: { n:"Fbi2" }, /*::[*/0x0000/*::]*/: { n:"Dimensions", f:parse_Dimensions }, + /*::[*/0x0001/*::]*/: { n:"BIFF2BLANK" }, /*::[*/0x0002/*::]*/: { n:"BIFF2INT", f:parse_BIFF2INT }, + /*::[*/0x0003/*::]*/: { n:"BIFF2NUM", f:parse_BIFF2NUM }, + /*::[*/0x0004/*::]*/: { n:"BIFF2STR", f:parse_BIFF2STR }, /*::[*/0x0005/*::]*/: { n:"BoolErr", f:parse_BoolErr }, /*::[*/0x0007/*::]*/: { n:"String", f:parse_BIFF2STRING }, /*::[*/0x0008/*::]*/: { n:"BIFF2ROW" }, + /*::[*/0x0009/*::]*/: { n:'BOF', f:parse_BOF }, /*::[*/0x000b/*::]*/: { n:"Index" }, /*::[*/0x0016/*::]*/: { n:"ExternCount", f:parseuint16 }, /*::[*/0x001e/*::]*/: { n:"BIFF2FORMAT", f:parse_BIFF2Format }, /*::[*/0x001f/*::]*/: { n:"BIFF2FMTCNT" }, /* 16-bit cnt of BIFF2FORMAT records */ /*::[*/0x0020/*::]*/: { n:"BIFF2COLINFO" }, /*::[*/0x0021/*::]*/: { n:"Array", f:parse_Array }, + /*::[*/0x0024/*::]*/: { n:"COLWIDTH" }, /*::[*/0x0025/*::]*/: { n:"DefaultRowHeight", f:parse_DefaultRowHeight }, + // 0x2c ?? + // 0x2d ?? + // 0x2e ?? + // 0x30 FONTCOUNT: number of fonts /*::[*/0x0032/*::]*/: { n:"BIFF2FONTXTRA", f:parse_BIFF2FONTXTRA }, - /*::[*/0x0034/*::]*/: { n:"DDEObjName" }, + // 0x35: INFOOPTS + // 0x36: TABLE (BIFF2 only) + // 0x37: TABLE2 (BIFF2 only) + // 0x38: WNDESK + // 0x39 ?? + // 0x3a: BEGINPREF + // 0x3b: ENDPREF /*::[*/0x003e/*::]*/: { n:"BIFF2WINDOW2" }, + // 0x3f ?? + // 0x46: SHOWSCROLL + // 0x47: SHOWFORMULA + // 0x48: STATUSBAR + // 0x49: SHORTMENUS + // 0x4A: + // 0x4B: + // 0x4C: + // 0x4E: + // 0x4F: + // 0x58: TOOLBAR (BIFF3) + + /* - - - */ + /*::[*/0x0034/*::]*/: { n:"DDEObjName" }, /*::[*/0x0043/*::]*/: { n:"BIFF2XF" }, /*::[*/0x0044/*::]*/: { n:"BIFF2XFINDEX", f:parseuint16 }, /*::[*/0x0045/*::]*/: { n:"BIFF2FONTCLR" }, @@ -1230,10 +1254,18 @@ var XLSRecordEnum = { /*::[*/0x0087/*::]*/: { n:"Addin" }, /*::[*/0x0088/*::]*/: { n:"Edg" }, /*::[*/0x0089/*::]*/: { n:"Pub" }, + // 0x8A + // 0x8B LH: alternate menu key flag (BIFF3/4) + // 0x8E + // 0x8F /*::[*/0x0091/*::]*/: { n:"Sub" }, + // 0x93 STYLE /*::[*/0x0094/*::]*/: { n:"LHRecord" }, /*::[*/0x0095/*::]*/: { n:"LHNGraph" }, /*::[*/0x0096/*::]*/: { n:"Sound" }, + // 0xA2 FNPROTO: function prototypes (BIFF4) + // 0xA3 + // 0xA8 /*::[*/0x00a9/*::]*/: { n:"CoordList" }, /*::[*/0x00ab/*::]*/: { n:"GCW" }, /*::[*/0x00bc/*::]*/: { n:"ShrFmla" }, /* Not necessarily same as 0x04bc */ @@ -1246,11 +1278,13 @@ var XLSRecordEnum = { /*::[*/0x00ea/*::]*/: { n:"TabIdConf" }, /*::[*/0x0162/*::]*/: { n:"XL5Modify" }, /*::[*/0x01a5/*::]*/: { n:"FileSharing2" }, + /*::[*/0x0206/*::]*/: { n:"Formula", f:parse_Formula }, /*::[*/0x0209/*::]*/: { n:'BOF', f:parse_BOF }, /*::[*/0x0218/*::]*/: { n:"Lbl", f:parse_Lbl }, /*::[*/0x0223/*::]*/: { n:"ExternName", f:parse_ExternName }, /*::[*/0x0231/*::]*/: { n:"Font" }, /*::[*/0x0243/*::]*/: { n:"BIFF3XF" }, + /*::[*/0x0406/*::]*/: { n:"Formula", f:parse_Formula }, /*::[*/0x0409/*::]*/: { n:'BOF', f:parse_BOF }, /*::[*/0x0443/*::]*/: { n:"BIFF4XF" }, /*::[*/0x086d/*::]*/: { n:"FeatInfo" }, diff --git a/bits/80_parseods.js b/bits/80_parseods.js index fb04786..661ce8e 100644 --- a/bits/80_parseods.js +++ b/bits/80_parseods.js @@ -556,11 +556,10 @@ var parse_content_xml = (function() { function parse_ods(zip/*:ZIPFile*/, opts/*:?ParseOpts*/)/*:Workbook*/ { opts = opts || ({}/*:any*/); - var ods = !!safegetzipfile(zip, 'objectdata'); - if(ods) parse_manifest(getzipdata(zip, 'META-INF/manifest.xml'), opts); + if(safegetzipfile(zip, 'META-INF/manifest.xml')) parse_manifest(getzipdata(zip, 'META-INF/manifest.xml'), opts); var content = getzipstr(zip, 'content.xml'); - if(!content) throw new Error("Missing content.xml in " + (ods ? "ODS" : "UOF")+ " file"); - var wb = parse_content_xml(ods ? content : utf8read(content), opts); + if(!content) throw new Error("Missing content.xml in ODS / UOF file"); + var wb = parse_content_xml(utf8read(content), opts); if(safegetzipfile(zip, 'meta.xml')) wb.Props = parse_core_props(getzipdata(zip, 'meta.xml')); return wb; } diff --git a/package.json b/package.json index 166314e..80683e6 100644 --- a/package.json +++ b/package.json @@ -46,10 +46,11 @@ "devDependencies": { "@sheetjs/uglify-js": "~2.7.3", "@types/node": "^8.5.9", + "acorn": "7.4.1", "alex": "^9.1.0", "blanket": "~1.2.3", "dtslint": "^0.1.2", - "eslint": "^7.23.0", + "eslint": "7.23.0", "eslint-plugin-html": "^6.1.2", "eslint-plugin-json": "^2.1.2", "jsdom": "~11.1.0", diff --git a/tests.lst b/tests.lst index 19468e7..9d25d90 100644 --- a/tests.lst +++ b/tests.lst @@ -227,7 +227,7 @@ apachepoi_MatrixFormulaEvalTestData.xlsx apachepoi_NewStyleConditionalFormattings.xlsx apachepoi_NewlineInFormulas.xlsx # apachepoi_NumberFormatApproxTests.xlsx # xlml -apachepoi_NumberFormatTests.xlsx +apachepoi_NumberFormatTests.xlsx # upstream changed file apachepoi_RepeatingRowsCols.xlsx apachepoi_SampleSS.strict.xlsx apachepoi_SampleSS.xlsx