From 085150db3ba3df56dee6a248ea509f2a7d6a0f7a Mon Sep 17 00:00:00 2001 From: SheetJS Date: Tue, 28 Mar 2017 00:41:01 -0400 Subject: [PATCH] DBF from js-harb - merged DBF from js-harb (fixes #407 h/t @joefreire) - updated codepage to 1.8.0 - stub for macro/dialog sheet parsing (fixes #292 h/t @GenoD) - XLSB/XLSM write vbaraw (fixes #606 h/t @johnothetree) - phantomjs demo (fixes #184 h/t @machinewu) --- README.md | 21 ++- bin/xlsx.njs | 1 + bits/30_ctype.js | 3 +- bits/31_rels.js | 3 +- bits/40_harb.js | 184 ++++++++++++++++++++++++++ bits/54_drawing.js | 4 +- bits/60_macrovba.js | 8 ++ bits/74_xmlbin.js | 10 ++ bits/85_parsezip.js | 20 +-- bits/86_writezip.js | 8 ++ bits/87_read.js | 2 + demos/extendscript/.gitignore | 3 + demos/phantomjs/README.md | 8 ++ demos/phantomjs/phantomjs.js | 14 ++ demos/phantomjs/sheetjs.xlsx | 1 + dist/cpexcel.js | 12 +- docbits/10_install.md | 1 + docbits/80_parseopts.md | 9 +- docbits/85_filetype.md | 10 ++ formats.dot | 2 + formats.png | Bin 79751 -> 85592 bytes package.json | 2 +- tests.lst | 4 +- xlsx.flow.js | 242 ++++++++++++++++++++++++++++++++-- xlsx.js | 242 ++++++++++++++++++++++++++++++++-- 25 files changed, 765 insertions(+), 49 deletions(-) create mode 100644 bits/40_harb.js create mode 100644 bits/60_macrovba.js create mode 100644 demos/extendscript/.gitignore create mode 100644 demos/phantomjs/README.md create mode 100644 demos/phantomjs/phantomjs.js create mode 120000 demos/phantomjs/sheetjs.xlsx diff --git a/README.md b/README.md index 4831de5..9798654 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ with a unified JS representation, and ES3/ES5 browser compatibility back to IE6. * [Excel 2003-2004 (SpreadsheetML)](#excel-2003-2004-spreadsheetml) * [Excel 2007+ Binary (XLSB, BIFF12)](#excel-2007-binary-xlsb-biff12) * [OpenDocument Spreadsheet (ODS/FODS) and Uniform Office Spreadsheet (UOS1/2)](#opendocument-spreadsheet-odsfods-and-uniform-office-spreadsheet-uos12) + * [dBASE and Visual FoxPro (DBF)](#dbase-and-visual-foxpro-dbf) * [Comma-Separated Values](#comma-separated-values) * [HTML](#html) - [Testing](#testing) @@ -103,6 +104,7 @@ The `demos` directory includes sample projects for: - [`angular`](demos/angular/) - [`browserify`](demos/browserify/) - [`Adobe ExtendScript`](demos/extendscript/) +- [`phantomjs`](demos/phantomjs/) - [`requirejs`](demos/requirejs/) - [`systemjs`](demos/systemjs/) - [`webpack`](demos/webpack/) @@ -751,9 +753,12 @@ file but Excel will know how to handle it. This library applies similar logic: |:-------|:--------------|:----------------------------------------------------| | `0xD0` | CFB Container | BIFF 5/8 or password-protected XLSX/XLSB | | `0x09` | BIFF Stream | BIFF 2/3/4/5 | -| `0x3C` | XML/HTML | SpreadsheetML or Flat ODS or UOS1 or HTML | -| `0x50` | ZIP Archive | XLSB or XLSX/M or ODS or UOS2 | -| `0xFE` | UTF8 Text | SpreadsheetML or Flat ODS or UOS1 | +| `0x3C` | XML/HTML | SpreadsheetML / Flat ODS / UOS1 / HTML / plaintext | +| `0x50` | ZIP Archive | XLSB or XLSX/M or ODS or UOS2 or plaintext | +| `0xFE` | UTF8 Text | SpreadsheetML or Flat ODS or UOS1 or plaintext | + +DBF files are detected based on the first byte as well as the third and fourth +bytes (corresponding to month and day of the file date) ## Writing Options @@ -997,6 +1002,7 @@ Despite the library name `xlsx`, it supports numerous spreadsheet file formats: | OpenDocument Spreadsheet (ODS) | :o: | :o: | | Flat XML ODF Spreadsheet (FODS) | :o: | :o: | | Uniform Office Format Spreadsheet (标文通 UOS1/UOS2) | :o: | | +| dBASE II/III/IV / Visual FoxPro (DBF) | :o: | | | **Other Common Spreadsheet Output Formats** |:-----:|:-----:| | HTML Tables | :o: | | @@ -1057,6 +1063,15 @@ UOS is a very similar format, and it comes in 2 varieties corresponding to ODS and FODS respectively. For the most part, the difference between the formats lies in the names of tags and attributes. +### 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. + +Multi-file extensions like external memos and tables are currently unsupported, +limited by the general ability to read arbitrary files in the web browser. + ### Comma-Separated Values Excel CSV deviates from RFC4180 in a number of important ways. The generated diff --git a/bin/xlsx.njs b/bin/xlsx.njs index 257c448..e6ce726 100755 --- a/bin/xlsx.njs +++ b/bin/xlsx.njs @@ -101,6 +101,7 @@ else opts.cellFormula = false; if(program.all) { opts.cellFormula = true; + opts.bookVBA = true; opts.cellNF = true; opts.cellStyles = true; opts.sheetStubs = true; diff --git a/bits/30_ctype.js b/bits/30_ctype.js index 666fc92..c44946f 100644 --- a/bits/30_ctype.js +++ b/bits/30_ctype.js @@ -190,7 +190,7 @@ XMLNS.CT = 'http://schemas.openxmlformats.org/package/2006/content-types'; function parse_ct(data/*:?string*/, opts) { var ct = ({ - workbooks:[], sheets:[], charts:[], dialogs:[], + workbooks:[], sheets:[], charts:[], dialogs:[], macros:[], rels:[], strs:[], comments:[], coreprops:[], extprops:[], custprops:[], themes:[], styles:[], calcchains:[], vba: [], @@ -266,6 +266,7 @@ function write_ct(ct, opts)/*:string*/ { f3('themes'); ['strs', 'styles'].forEach(f1); ['coreprops', 'extprops', 'custprops'].forEach(f3); + f3('vba'); if(o.length>2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } return o.join(""); } diff --git a/bits/31_rels.js b/bits/31_rels.js index d3e345f..cff1f88 100644 --- a/bits/31_rels.js +++ b/bits/31_rels.js @@ -1,7 +1,8 @@ /* 9.3 Relationships */ var RELS = ({ WB: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument", - SHEET: "http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument" + SHEET: "http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument", + VBA: "http://schemas.microsoft.com/office/2006/relationships/vbaProject" }/*:any*/); /* 9.3.3 Representing Relationships */ diff --git a/bits/40_harb.js b/bits/40_harb.js new file mode 100644 index 0000000..d6595d5 --- /dev/null +++ b/bits/40_harb.js @@ -0,0 +1,184 @@ +/* from js-harb (C) 2014-present SheetJS */ +var DBF = (function() { +var dbf_codepage_map = { + /* Code Pages Supported by Visual FoxPro */ + /*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850, + /*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000, + /*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866, + /*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861, + /*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620, + /*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857, + /*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949, + /*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932, + /*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255, + /*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007, + /*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006, + /*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251, + /*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253, + + /* shapefile DBF extension */ + /*::[*/0x00/*::]*/: 20127, /*::[*/0x08/*::]*/: 865, + /*::[*/0x09/*::]*/: 437, /*::[*/0x0A/*::]*/: 850, + /*::[*/0x0B/*::]*/: 437, /*::[*/0x0D/*::]*/: 437, + /*::[*/0x0E/*::]*/: 850, /*::[*/0x0F/*::]*/: 437, + /*::[*/0x10/*::]*/: 850, /*::[*/0x11/*::]*/: 437, + /*::[*/0x12/*::]*/: 850, /*::[*/0x13/*::]*/: 932, + /*::[*/0x14/*::]*/: 850, /*::[*/0x15/*::]*/: 437, + /*::[*/0x16/*::]*/: 850, /*::[*/0x17/*::]*/: 865, + /*::[*/0x18/*::]*/: 437, /*::[*/0x19/*::]*/: 437, + /*::[*/0x1A/*::]*/: 850, /*::[*/0x1B/*::]*/: 437, + /*::[*/0x1C/*::]*/: 863, /*::[*/0x1D/*::]*/: 850, + /*::[*/0x1F/*::]*/: 852, /*::[*/0x22/*::]*/: 852, + /*::[*/0x23/*::]*/: 852, /*::[*/0x24/*::]*/: 860, + /*::[*/0x25/*::]*/: 850, /*::[*/0x26/*::]*/: 866, + /*::[*/0x37/*::]*/: 850, /*::[*/0x40/*::]*/: 852, + /*::[*/0x4D/*::]*/: 936, /*::[*/0x4E/*::]*/: 949, + /*::[*/0x4F/*::]*/: 950, /*::[*/0x50/*::]*/: 874, + /*::[*/0x57/*::]*/: 1252, /*::[*/0x58/*::]*/: 1252, + /*::[*/0x59/*::]*/: 1252, + + /*::[*/0xFF/*::]*/: 16969 +}; + +/* TODO: find an actual specification */ +function dbf_to_aoa(buf, opts)/*:AOA*/ { + var out/*:AOA*/ = []; + /* TODO: browser based */ + var d/*:Block*/ = (new_raw_buf(1)/*:any*/); + switch(opts.type) { + case 'base64': d = s2a(Base64.decode(buf)); break; + case 'binary': d = s2a(buf); break; + case 'buffer': + case 'array': d = buf; break; + } + prep_blob(d, 0); + /* header */ + var ft = d.read_shift(1); + var memo = false; + var vfp = false; + switch(ft) { + case 0x03: break; + case 0x30: vfp = true; memo = true; break; + case 0x31: vfp = true; break; + case 0x83: memo = true; break; + case 0x8B: memo = true; break; + case 0xF5: memo = true; break; + default: process.exit(); throw new Error("DBF Unsupported Version: " + ft.toString(16)); + } + var filedate = new Date(d.read_shift(1) + 1900, d.read_shift(1) - 1, d.read_shift(1)); + var nrow = d.read_shift(4); + var fpos = d.read_shift(2); + var rlen = d.read_shift(2); + d.l+=16; + + var flags = d.read_shift(1); + //if(memo && ((flags & 0x02) === 0)) throw new Error("DBF Flags " + flags.toString(16) + " ft " + ft.toString(16)); + + /* codepage present in FoxPro */ + var current_cp = 1252; + if(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]]; + d.l+=1; + + d.l+=2; + var fields = [], field = {}; + var hend = fpos - 10 - (vfp ? 264 : 0); + while(d.l < hend) { + field = {}; + field.name = cptable.utils.decode(current_cp, d.slice(d.l, d.l+10)).replace(/[\u0000\r\n].*$/g,""); + d.l += 11; + field.type = String.fromCharCode(d.read_shift(1)); + field.offset = d.read_shift(4); + field.len = d.read_shift(1); + field.dec = d.read_shift(1); + if(field.name.length) fields.push(field); + d.l += 14; + switch(field.type) { + // case 'B': break; // Binary + case 'C': break; // character + case 'D': break; // date + case 'F': break; // floating point + // case 'G': break; // General + case 'I': break; // long + case 'L': break; // boolean + case 'M': break; // memo + case 'N': break; // number + // case 'O': break; // double + // case 'P': break; // Picture + case 'T': break; // datetime + case 'Y': break; // currency + case '0': break; // null ? + case '+': break; // autoincrement + case '@': break; // timestamp + default: throw new Error('Unknown Field Type: ' + field.type); + } + } + if(d[d.l] !== 0x0D) d.l = fpos-1; + if(d.read_shift(1) !== 0x0D) throw new Error("DBF Terminator not found " + d.l + " " + d[d.l]); + d.l = fpos; + /* data */ + var R = 0, C = 0; + out[0] = []; + for(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name; + while(nrow-- > 0) { + if(d[d.l] === 0x2A) { d.l+=rlen; continue; } + ++d.l; + out[++R] = []; C = 0; + for(C = 0; C != fields.length; ++C) { + var dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len; + prep_blob(dd, 0); + var s = cptable.utils.decode(current_cp, dd); + switch(fields[C].type) { + case 'C': + out[R][C] = cptable.utils.decode(current_cp, dd); + out[R][C] = out[R][C].trim(); + break; + case 'D': + if(s.length === 8) out[R][C] = new Date(+s.substr(0,4), +s.substr(4,2)-1, +s.substr(6,2)); + else out[R][C] = s; + break; + case 'F': out[R][C] = parseFloat(s.trim()); break; + case 'I': out[R][C] = dd.read_shift(4, 'i'); break; + case 'L': switch(s.toUpperCase()) { + case 'Y': case 'T': out[R][C] = true; break; + case 'N': case 'F': out[R][C] = false; break; + case ' ': case '?': out[R][C] = false; break; /* NOTE: technically unitialized */ + default: throw new Error("DBF Unrecognized L:|" + s + "|"); + } break; + case 'M': /* TODO: handle memo files */ + if(!memo) throw new Error("DBF Unexpected MEMO for type " + ft.toString(16)); + out[R][C] = "##MEMO##" + dd.read_shift(4); + break; + case 'N': out[R][C] = +s.replace(/\u0000/g,"").trim(); break; + case 'T': + var day = dd.read_shift(4), ms = dd.read_shift(4); + throw new Error(day + " | " + ms); + //out[R][C] = new Date(); // FIXME!!! + //break; + case 'Y': out[R][C] = dd.read(4,'i')/1e4; break; + case '0': + if(fields[C].name === '_NullFlags') break; + /* falls through */ + default: throw new Error("DBF Unsupported data type " + fields[C].type); + } + } + } + if(d.l < d.length && d[d.l++] != 0x1A) throw new Error("DBF EOF Marker missing " + (d.l-1) + " of " + d.length + " " + d[d.l-1].toString(16)); + return out; +} + +function dbf_to_sheet(buf, opts)/*:Worksheet*/ { + var o = opts || {}; + if(!o.dateNF) o.dateNF = "yyyymmdd"; + return aoa_to_sheet(dbf_to_aoa(buf, o), o); +} + +function dbf_to_workbook(buf, opts)/*:Workbook*/ { + try { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); } + catch(e) { if(opts && opts.WTF) throw e; } + return ({SheetNames:[],Sheets:{}}); +} + return { + to_workbook: dbf_to_workbook, + to_sheet: dbf_to_sheet + }; +})(); diff --git a/bits/54_drawing.js b/bits/54_drawing.js index 13ee2f3..20c0d17 100644 --- a/bits/54_drawing.js +++ b/bits/54_drawing.js @@ -8,8 +8,8 @@ function parse_drawing(data, rels/*:any*/) { - 20.5.2.16 graphicFrame CT_GraphicalObjectFrame - 20.1.2.2.16 graphic CT_GraphicalObject - 20.1.2.2.17 graphicData CT_GraphicalObjectData - - chart reference - the actual type is based on the URI of the graphicData + - chart reference + the actual type is based on the URI of the graphicData TODO: handle embedded charts and other types of graphics */ var id = (data.match(/]*r:id="([^"]*)"/)||["",""])[1]; diff --git a/bits/60_macrovba.js b/bits/60_macrovba.js new file mode 100644 index 0000000..4daccfb --- /dev/null +++ b/bits/60_macrovba.js @@ -0,0 +1,8 @@ +RELS.DS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet"; +RELS.MS = "http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet"; + +/* macro and dialog sheet stubs */ +function parse_ds_bin() { return {'!type':'dialog'}; } +function parse_ds_xml() { return {'!type':'dialog'}; } +function parse_ms_bin() { return {'!type':'macro'}; } +function parse_ms_xml() { return {'!type':'macro'}; } diff --git a/bits/74_xmlbin.js b/bits/74_xmlbin.js index c46ab11..852e1d9 100644 --- a/bits/74_xmlbin.js +++ b/bits/74_xmlbin.js @@ -13,6 +13,16 @@ function parse_cs(data, name/*:string*/, opts, rels, wb, themes, styles)/*:Works return parse_cs_xml((data/*:any*/), opts, rels, wb, themes, styles); } +function parse_ms(data, name/*:string*/, opts, rels, wb, themes, styles)/*:Worksheet*/ { + if(name.slice(-4)===".bin") return parse_ms_bin((data/*:any*/), opts, rels, wb, themes, styles); + return parse_ms_xml((data/*:any*/), opts, rels, wb, themes, styles); +} + +function parse_ds(data, name/*:string*/, opts, rels, wb, themes, styles)/*:Worksheet*/ { + if(name.slice(-4)===".bin") return parse_ds_bin((data/*:any*/), opts, rels, wb, themes, styles); + return parse_ds_xml((data/*:any*/), opts, rels, wb, themes, styles); +} + function parse_sty(data, name/*:string*/, themes, opts) { if(name.slice(-4)===".bin") return parse_sty_bin((data/*:any*/), themes, opts); return parse_sty_xml((data/*:any*/), themes, opts); diff --git a/bits/85_parsezip.js b/bits/85_parsezip.js index a56a646..d88c02c 100644 --- a/bits/85_parsezip.js +++ b/bits/85_parsezip.js @@ -1,15 +1,15 @@ +function get_sheet_type(n) { + if(RELS.WS.indexOf(n) > -1) return "sheet"; + if(RELS.CS && n == RELS.CS) return "chart"; + if(RELS.DS && n == RELS.DS) return "dialog"; + if(RELS.MS && n == RELS.MS) return "macro"; + if(!n || !n.length) return "sheet"; + return n; +} function safe_parse_wbrels(wbrels, sheets) { if(!wbrels) return 0; - function get_type(n) { - if(RELS.WS.indexOf(n) > -1) return "sheet"; - if(RELS.CS && n == RELS.CS) return "chart"; - if(RELS.DS && n == RELS.DS) return "dialog"; - if(RELS.MS && n == RELS.MS) return "macro"; - if(!n || !n.length) return "sheet"; - return n; - } try { - wbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_type(wbrels['!id'][w.id].Type)]; }); + wbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; }); } catch(e) { return null; } return !wbrels || wbrels.length === 0 ? null : wbrels; } @@ -31,6 +31,8 @@ function safe_parse_sheet(zip, path/*:string*/, relsPath/*:string*/, sheet, shee var crelsp = get_rels_path(chartp); cs = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp,true), chartp), wb, cs); break; + case 'macro': sheets[sheet]=parse_ms(data, path, opts,sheetRels[sheet], wb, themes, styles); break; + case 'dialog': sheets[sheet]=parse_ds(data, path, opts,sheetRels[sheet], wb, themes, styles); break; } } catch(e) { if(opts.WTF) throw e; } } diff --git a/bits/86_writezip.js b/bits/86_writezip.js index 97d2a21..9217ea4 100644 --- a/bits/86_writezip.js +++ b/bits/86_writezip.js @@ -23,6 +23,7 @@ function write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ { opts.rels = {}; opts.wbrels = {}; opts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0; var wbext = opts.bookType == "xlsb" ? "bin" : "xml"; + var vbafmt = opts.bookType == "xlsb" || opts.bookType == "xlsm"; var ct = { workbooks: [], sheets: [], calcchains: [], themes: [], styles: [], coreprops: [], extprops: [], custprops: [], strs:[], comments: [], vba: [], TODO:[], rels:[], xmlns: "" }; @@ -89,6 +90,13 @@ function write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ { ct.styles.push(f); add_rels(opts.wbrels, ++rId, "styles." + wbext, RELS.STY); + if(wb.vbaraw && vbafmt) { + f = "xl/vbaProject.bin"; + zip.file(f, wb.vbaraw); + ct.vba.push(f); + add_rels(opts.wbrels, ++rId, "vbaProject.bin", RELS.VBA); + } + zip.file("[Content_Types].xml", write_ct(ct, opts)); zip.file('_rels/.rels', write_rels(opts.rels)); zip.file('xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels)); diff --git a/bits/87_read.js b/bits/87_read.js index bf57537..25b8d25 100644 --- a/bits/87_read.js +++ b/bits/87_read.js @@ -35,6 +35,8 @@ function readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ { case 0x3C: return parse_xlml(d, o); case 0x50: if(n[1] == 0x4B && n[2] < 0x20 && n[3] < 0x20) return read_zip(d, o); break; case 0xEF: return parse_xlml(d, o); + case 0x03: case 0x83: case 0x8B: return DBF.to_workbook(d, o); + case 0x30: case 0x31: if(n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o); break; default: throw new Error("Unsupported file " + n.join("|")); } throw new Error("Unsupported file format " + n.join("|")); diff --git a/demos/extendscript/.gitignore b/demos/extendscript/.gitignore new file mode 100644 index 0000000..275d839 --- /dev/null +++ b/demos/extendscript/.gitignore @@ -0,0 +1,3 @@ +jszip.js +shim.js +xlsx.flow.js diff --git a/demos/phantomjs/README.md b/demos/phantomjs/README.md new file mode 100644 index 0000000..d248143 --- /dev/null +++ b/demos/phantomjs/README.md @@ -0,0 +1,8 @@ +# PhantomJS Demo + +This was tested in phantomjs 2.1.1, installed using the node module: + +```bash +$ npm install -g phantomjs +$ phantomjs phantomjs.js +``` diff --git a/demos/phantomjs/phantomjs.js b/demos/phantomjs/phantomjs.js new file mode 100644 index 0000000..fc9ae56 --- /dev/null +++ b/demos/phantomjs/phantomjs.js @@ -0,0 +1,14 @@ +var fs = require('fs'); +var xlsx = require('../../xlsx'); +var page = require('webpage').create(); + +page.open('http://www.google.com', function(status) { + + var data = fs.read('sheetjs.xlsx', {mode: 'rb', charset: 'utf8'}); + var workbook = xlsx.read(data, {type: 'binary'}); + data = xlsx.utils.sheet_to_csv(workbook.Sheets['SheetJS']); + console.log("Data: " + data); + + phantom.exit(); +}); + diff --git a/demos/phantomjs/sheetjs.xlsx b/demos/phantomjs/sheetjs.xlsx new file mode 120000 index 0000000..1386e36 --- /dev/null +++ b/demos/phantomjs/sheetjs.xlsx @@ -0,0 +1 @@ +../extendscript/sheetjs.xlsx \ No newline at end of file diff --git a/dist/cpexcel.js b/dist/cpexcel.js index ca1c705..103c620 100644 --- a/dist/cpexcel.js +++ b/dist/cpexcel.js @@ -1,7 +1,17 @@ /* cpexcel.js (C) 2013-present SheetJS -- http://sheetjs.com */ /*jshint -W100 */ -var cptable = {version:"1.7.0"}; +var cptable = {version:"1.8.0"}; +cptable[437] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[620] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàąçêëèïîćÄĄĘęłôöĆûùŚÖÜ¢Ł¥śƒŹŻóÓńŃźż¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[737] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[850] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[852] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[857] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[861] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[865] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[866] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); cptable[874] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[895] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ČüéďäĎŤčěĚĹÍľǪÄÁÉžŽôöÓůÚýÖÜŠĽÝŘťáíóúňŇŮÔšřŕŔ¼§«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); cptable[932] = (function(){ var d = [], e = {}, D = [], j; D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚��������������������������������".split(""); for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} diff --git a/docbits/10_install.md b/docbits/10_install.md index 9c4e89e..edce5d8 100644 --- a/docbits/10_install.md +++ b/docbits/10_install.md @@ -28,6 +28,7 @@ The `demos` directory includes sample projects for: - [`angular`](demos/angular/) - [`browserify`](demos/browserify/) - [`Adobe ExtendScript`](demos/extendscript/) +- [`phantomjs`](demos/phantomjs/) - [`requirejs`](demos/requirejs/) - [`systemjs`](demos/systemjs/) - [`webpack`](demos/webpack/) diff --git a/docbits/80_parseopts.md b/docbits/80_parseopts.md index 4191145..08f18f4 100644 --- a/docbits/80_parseopts.md +++ b/docbits/80_parseopts.md @@ -63,7 +63,10 @@ file but Excel will know how to handle it. This library applies similar logic: |:-------|:--------------|:----------------------------------------------------| | `0xD0` | CFB Container | BIFF 5/8 or password-protected XLSX/XLSB | | `0x09` | BIFF Stream | BIFF 2/3/4/5 | -| `0x3C` | XML/HTML | SpreadsheetML or Flat ODS or UOS1 or HTML | -| `0x50` | ZIP Archive | XLSB or XLSX/M or ODS or UOS2 | -| `0xFE` | UTF8 Text | SpreadsheetML or Flat ODS or UOS1 | +| `0x3C` | XML/HTML | SpreadsheetML / Flat ODS / UOS1 / HTML / plaintext | +| `0x50` | ZIP Archive | XLSB or XLSX/M or ODS or UOS2 or plaintext | +| `0xFE` | UTF8 Text | SpreadsheetML or Flat ODS or UOS1 or plaintext | + +DBF files are detected based on the first byte as well as the third and fourth +bytes (corresponding to month and day of the file date) diff --git a/docbits/85_filetype.md b/docbits/85_filetype.md index ca12816..e08355d 100644 --- a/docbits/85_filetype.md +++ b/docbits/85_filetype.md @@ -19,6 +19,7 @@ Despite the library name `xlsx`, it supports numerous spreadsheet file formats: | OpenDocument Spreadsheet (ODS) | :o: | :o: | | Flat XML ODF Spreadsheet (FODS) | :o: | :o: | | Uniform Office Format Spreadsheet (标文通 UOS1/UOS2) | :o: | | +| dBASE II/III/IV / Visual FoxPro (DBF) | :o: | | | **Other Common Spreadsheet Output Formats** |:-----:|:-----:| | HTML Tables | :o: | | @@ -79,6 +80,15 @@ UOS is a very similar format, and it comes in 2 varieties corresponding to ODS and FODS respectively. For the most part, the difference between the formats lies in the names of tags and attributes. +### 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. + +Multi-file extensions like external memos and tables are currently unsupported, +limited by the general ability to read arbitrary files in the web browser. + ### Comma-Separated Values Excel CSV deviates from RFC4180 in a number of important ways. The generated diff --git a/formats.dot b/formats.dot index 5e772b3..931b509 100644 --- a/formats.dot +++ b/formats.dot @@ -24,6 +24,7 @@ digraph G { node [style=filled,color=cyan]; html [label="HTML\nTable"]; csv [label="CSV"]; + dbf [label="DBF"]; } subgraph JSXLSX { @@ -46,6 +47,7 @@ digraph G { fods -> csf csf -> fods uos -> csf + dbf -> csf html -> csf } } diff --git a/formats.png b/formats.png index 67b9514127b36697437f064abbb80e2ae68b01d5..fb756afcef911c6a7b242135290c24a93f1deaf5 100644 GIT binary patch literal 85592 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 Z14c)2b-ESB001X?j!Srl9|3Zzc$tr0Dy%2eE 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 z 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

$ovE4|X0FYq;su}I$S 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 o[o.length] = (''); o[1]=o[1].replace("/>",">"); } return o.join(""); } /* 9.3 Relationships */ var RELS = ({ WB: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument", - SHEET: "http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument" + SHEET: "http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument", + VBA: "http://schemas.microsoft.com/office/2006/relationships/vbaProject" }/*:any*/); /* 9.3.3 Representing Relationships */ @@ -4717,6 +4719,190 @@ function parse_RString(blob, length, opts) { cell.val = str; return cell; } +/* from js-harb (C) 2014-present SheetJS */ +var DBF = (function() { +var dbf_codepage_map = { + /* Code Pages Supported by Visual FoxPro */ + /*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850, + /*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000, + /*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866, + /*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861, + /*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620, + /*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857, + /*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949, + /*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932, + /*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255, + /*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007, + /*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006, + /*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251, + /*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253, + + /* shapefile DBF extension */ + /*::[*/0x00/*::]*/: 20127, /*::[*/0x08/*::]*/: 865, + /*::[*/0x09/*::]*/: 437, /*::[*/0x0A/*::]*/: 850, + /*::[*/0x0B/*::]*/: 437, /*::[*/0x0D/*::]*/: 437, + /*::[*/0x0E/*::]*/: 850, /*::[*/0x0F/*::]*/: 437, + /*::[*/0x10/*::]*/: 850, /*::[*/0x11/*::]*/: 437, + /*::[*/0x12/*::]*/: 850, /*::[*/0x13/*::]*/: 932, + /*::[*/0x14/*::]*/: 850, /*::[*/0x15/*::]*/: 437, + /*::[*/0x16/*::]*/: 850, /*::[*/0x17/*::]*/: 865, + /*::[*/0x18/*::]*/: 437, /*::[*/0x19/*::]*/: 437, + /*::[*/0x1A/*::]*/: 850, /*::[*/0x1B/*::]*/: 437, + /*::[*/0x1C/*::]*/: 863, /*::[*/0x1D/*::]*/: 850, + /*::[*/0x1F/*::]*/: 852, /*::[*/0x22/*::]*/: 852, + /*::[*/0x23/*::]*/: 852, /*::[*/0x24/*::]*/: 860, + /*::[*/0x25/*::]*/: 850, /*::[*/0x26/*::]*/: 866, + /*::[*/0x37/*::]*/: 850, /*::[*/0x40/*::]*/: 852, + /*::[*/0x4D/*::]*/: 936, /*::[*/0x4E/*::]*/: 949, + /*::[*/0x4F/*::]*/: 950, /*::[*/0x50/*::]*/: 874, + /*::[*/0x57/*::]*/: 1252, /*::[*/0x58/*::]*/: 1252, + /*::[*/0x59/*::]*/: 1252, + + /*::[*/0xFF/*::]*/: 16969 +}; + +/* TODO: find an actual specification */ +function dbf_to_aoa(buf, opts)/*:AOA*/ { + var out/*:AOA*/ = []; + /* TODO: browser based */ + var d/*:Block*/ = (new_raw_buf(1)/*:any*/); + switch(opts.type) { + case 'base64': d = s2a(Base64.decode(buf)); break; + case 'binary': d = s2a(buf); break; + case 'buffer': + case 'array': d = buf; break; + } + prep_blob(d, 0); + /* header */ + var ft = d.read_shift(1); + var memo = false; + var vfp = false; + switch(ft) { + case 0x03: break; + case 0x30: vfp = true; memo = true; break; + case 0x31: vfp = true; break; + case 0x83: memo = true; break; + case 0x8B: memo = true; break; + case 0xF5: memo = true; break; + default: process.exit(); throw new Error("DBF Unsupported Version: " + ft.toString(16)); + } + var filedate = new Date(d.read_shift(1) + 1900, d.read_shift(1) - 1, d.read_shift(1)); + var nrow = d.read_shift(4); + var fpos = d.read_shift(2); + var rlen = d.read_shift(2); + d.l+=16; + + var flags = d.read_shift(1); + //if(memo && ((flags & 0x02) === 0)) throw new Error("DBF Flags " + flags.toString(16) + " ft " + ft.toString(16)); + + /* codepage present in FoxPro */ + var current_cp = 1252; + if(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]]; + d.l+=1; + + d.l+=2; + var fields = [], field = {}; + var hend = fpos - 10 - (vfp ? 264 : 0); + while(d.l < hend) { + field = {}; + field.name = cptable.utils.decode(current_cp, d.slice(d.l, d.l+10)).replace(/[\u0000\r\n].*$/g,""); + d.l += 11; + field.type = String.fromCharCode(d.read_shift(1)); + field.offset = d.read_shift(4); + field.len = d.read_shift(1); + field.dec = d.read_shift(1); + if(field.name.length) fields.push(field); + d.l += 14; + switch(field.type) { + // case 'B': break; // Binary + case 'C': break; // character + case 'D': break; // date + case 'F': break; // floating point + // case 'G': break; // General + case 'I': break; // long + case 'L': break; // boolean + case 'M': break; // memo + case 'N': break; // number + // case 'O': break; // double + // case 'P': break; // Picture + case 'T': break; // datetime + case 'Y': break; // currency + case '0': break; // null ? + case '+': break; // autoincrement + case '@': break; // timestamp + default: throw new Error('Unknown Field Type: ' + field.type); + } + } + if(d[d.l] !== 0x0D) d.l = fpos-1; + if(d.read_shift(1) !== 0x0D) throw new Error("DBF Terminator not found " + d.l + " " + d[d.l]); + d.l = fpos; + /* data */ + var R = 0, C = 0; + out[0] = []; + for(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name; + while(nrow-- > 0) { + if(d[d.l] === 0x2A) { d.l+=rlen; continue; } + ++d.l; + out[++R] = []; C = 0; + for(C = 0; C != fields.length; ++C) { + var dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len; + prep_blob(dd, 0); + var s = cptable.utils.decode(current_cp, dd); + switch(fields[C].type) { + case 'C': + out[R][C] = cptable.utils.decode(current_cp, dd); + out[R][C] = out[R][C].trim(); + break; + case 'D': + if(s.length === 8) out[R][C] = new Date(+s.substr(0,4), +s.substr(4,2)-1, +s.substr(6,2)); + else out[R][C] = s; + break; + case 'F': out[R][C] = parseFloat(s.trim()); break; + case 'I': out[R][C] = dd.read_shift(4, 'i'); break; + case 'L': switch(s.toUpperCase()) { + case 'Y': case 'T': out[R][C] = true; break; + case 'N': case 'F': out[R][C] = false; break; + case ' ': case '?': out[R][C] = false; break; /* NOTE: technically unitialized */ + default: throw new Error("DBF Unrecognized L:|" + s + "|"); + } break; + case 'M': /* TODO: handle memo files */ + if(!memo) throw new Error("DBF Unexpected MEMO for type " + ft.toString(16)); + out[R][C] = "##MEMO##" + dd.read_shift(4); + break; + case 'N': out[R][C] = +s.replace(/\u0000/g,"").trim(); break; + case 'T': + var day = dd.read_shift(4), ms = dd.read_shift(4); + throw new Error(day + " | " + ms); + //out[R][C] = new Date(); // FIXME!!! + //break; + case 'Y': out[R][C] = dd.read(4,'i')/1e4; break; + case '0': + if(fields[C].name === '_NullFlags') break; + /* falls through */ + default: throw new Error("DBF Unsupported data type " + fields[C].type); + } + } + } + if(d.l < d.length && d[d.l++] != 0x1A) throw new Error("DBF EOF Marker missing " + (d.l-1) + " of " + d.length + " " + d[d.l-1].toString(16)); + return out; +} + +function dbf_to_sheet(buf, opts)/*:Worksheet*/ { + var o = opts || {}; + if(!o.dateNF) o.dateNF = "yyyymmdd"; + return aoa_to_sheet(dbf_to_aoa(buf, o), o); +} + +function dbf_to_workbook(buf, opts)/*:Workbook*/ { + try { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); } + catch(e) { if(opts && opts.WTF) throw e; } + return ({SheetNames:[],Sheets:{}}); +} + return { + to_workbook: dbf_to_workbook, + to_sheet: dbf_to_sheet + }; +})(); /* 18.4.1 charset to codepage mapping */ var CS2CP = ({ /*::[*/0/*::]*/: 1252, /* ANSI */ @@ -6167,8 +6353,8 @@ function parse_drawing(data, rels/*:any*/) { - 20.5.2.16 graphicFrame CT_GraphicalObjectFrame - 20.1.2.2.16 graphic CT_GraphicalObject - 20.1.2.2.17 graphicData CT_GraphicalObjectData - - chart reference - the actual type is based on the URI of the graphicData + - chart reference + the actual type is based on the URI of the graphicData TODO: handle embedded charts and other types of graphics */ var id = (data.match(/]*r:id="([^"]*)"/)||["",""])[1]; @@ -6296,6 +6482,14 @@ function parse_comments_bin(data, opts) { } function write_comments_bin(data, opts) { } +RELS.DS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet"; +RELS.MS = "http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet"; + +/* macro and dialog sheet stubs */ +function parse_ds_bin() { return {'!type':'dialog'}; } +function parse_ds_xml() { return {'!type':'dialog'}; } +function parse_ms_bin() { return {'!type':'macro'}; } +function parse_ms_xml() { return {'!type':'macro'}; } /* TODO: it will be useful to parse the function str */ var rc_to_a1 = (function(){ var rcregex = /(^|[^A-Za-z])R(\[?)(-?\d+|)\]?C(\[?)(-?\d+|)\]?/g; @@ -10221,6 +10415,16 @@ function parse_cs(data, name/*:string*/, opts, rels, wb, themes, styles)/*:Works return parse_cs_xml((data/*:any*/), opts, rels, wb, themes, styles); } +function parse_ms(data, name/*:string*/, opts, rels, wb, themes, styles)/*:Worksheet*/ { + if(name.slice(-4)===".bin") return parse_ms_bin((data/*:any*/), opts, rels, wb, themes, styles); + return parse_ms_xml((data/*:any*/), opts, rels, wb, themes, styles); +} + +function parse_ds(data, name/*:string*/, opts, rels, wb, themes, styles)/*:Worksheet*/ { + if(name.slice(-4)===".bin") return parse_ds_bin((data/*:any*/), opts, rels, wb, themes, styles); + return parse_ds_xml((data/*:any*/), opts, rels, wb, themes, styles); +} + function parse_sty(data, name/*:string*/, themes, opts) { if(name.slice(-4)===".bin") return parse_sty_bin((data/*:any*/), themes, opts); return parse_sty_xml((data/*:any*/), themes, opts); @@ -13850,18 +14054,18 @@ var fix_write_opts = fix_opts_func([ ['WTF', false] /* WTF mode (throws errors) */ ]); +function get_sheet_type(n) { + if(RELS.WS.indexOf(n) > -1) return "sheet"; + if(RELS.CS && n == RELS.CS) return "chart"; + if(RELS.DS && n == RELS.DS) return "dialog"; + if(RELS.MS && n == RELS.MS) return "macro"; + if(!n || !n.length) return "sheet"; + return n; +} function safe_parse_wbrels(wbrels, sheets) { if(!wbrels) return 0; - function get_type(n) { - if(RELS.WS.indexOf(n) > -1) return "sheet"; - if(RELS.CS && n == RELS.CS) return "chart"; - if(RELS.DS && n == RELS.DS) return "dialog"; - if(RELS.MS && n == RELS.MS) return "macro"; - if(!n || !n.length) return "sheet"; - return n; - } try { - wbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_type(wbrels['!id'][w.id].Type)]; }); + wbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; }); } catch(e) { return null; } return !wbrels || wbrels.length === 0 ? null : wbrels; } @@ -13883,6 +14087,8 @@ function safe_parse_sheet(zip, path/*:string*/, relsPath/*:string*/, sheet, shee var crelsp = get_rels_path(chartp); cs = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp,true), chartp), wb, cs); break; + case 'macro': sheets[sheet]=parse_ms(data, path, opts,sheetRels[sheet], wb, themes, styles); break; + case 'dialog': sheets[sheet]=parse_ds(data, path, opts,sheetRels[sheet], wb, themes, styles); break; } } catch(e) { if(opts.WTF) throw e; } } @@ -14042,6 +14248,7 @@ function write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ { opts.rels = {}; opts.wbrels = {}; opts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0; var wbext = opts.bookType == "xlsb" ? "bin" : "xml"; + var vbafmt = opts.bookType == "xlsb" || opts.bookType == "xlsm"; var ct = { workbooks: [], sheets: [], calcchains: [], themes: [], styles: [], coreprops: [], extprops: [], custprops: [], strs:[], comments: [], vba: [], TODO:[], rels:[], xmlns: "" }; @@ -14108,6 +14315,13 @@ function write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ { ct.styles.push(f); add_rels(opts.wbrels, ++rId, "styles." + wbext, RELS.STY); + if(wb.vbaraw && vbafmt) { + f = "xl/vbaProject.bin"; + zip.file(f, wb.vbaraw); + ct.vba.push(f); + add_rels(opts.wbrels, ++rId, "vbaProject.bin", RELS.VBA); + } + zip.file("[Content_Types].xml", write_ct(ct, opts)); zip.file('_rels/.rels', write_rels(opts.rels)); zip.file('xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels)); @@ -14150,6 +14364,8 @@ function readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ { case 0x3C: return parse_xlml(d, o); case 0x50: if(n[1] == 0x4B && n[2] < 0x20 && n[3] < 0x20) return read_zip(d, o); break; case 0xEF: return parse_xlml(d, o); + case 0x03: case 0x83: case 0x8B: return DBF.to_workbook(d, o); + case 0x30: case 0x31: if(n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o); break; default: throw new Error("Unsupported file " + n.join("|")); } throw new Error("Unsupported file format " + n.join("|")); diff --git a/xlsx.js b/xlsx.js index b95fe71..3564d8b 100644 --- a/xlsx.js +++ b/xlsx.js @@ -2692,7 +2692,7 @@ XMLNS.CT = 'http://schemas.openxmlformats.org/package/2006/content-types'; function parse_ct(data, opts) { var ct = ({ - workbooks:[], sheets:[], charts:[], dialogs:[], + workbooks:[], sheets:[], charts:[], dialogs:[], macros:[], rels:[], strs:[], comments:[], coreprops:[], extprops:[], custprops:[], themes:[], styles:[], calcchains:[], vba: [], @@ -2768,13 +2768,15 @@ function write_ct(ct, opts) { f3('themes'); ['strs', 'styles'].forEach(f1); ['coreprops', 'extprops', 'custprops'].forEach(f3); + f3('vba'); if(o.length>2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } return o.join(""); } /* 9.3 Relationships */ var RELS = ({ WB: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument", - SHEET: "http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument" + SHEET: "http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument", + VBA: "http://schemas.microsoft.com/office/2006/relationships/vbaProject" }); /* 9.3.3 Representing Relationships */ @@ -4663,6 +4665,190 @@ function parse_RString(blob, length, opts) { cell.val = str; return cell; } +/* from js-harb (C) 2014-present SheetJS */ +var DBF = (function() { +var dbf_codepage_map = { + /* Code Pages Supported by Visual FoxPro */ +0x01: 437, 0x02: 850, +0x03: 1252, 0x04: 10000, +0x64: 852, 0x65: 866, +0x66: 865, 0x67: 861, +0x68: 895, 0x69: 620, +0x6A: 737, 0x6B: 857, +0x78: 950, 0x79: 949, +0x7A: 936, 0x7B: 932, +0x7C: 874, 0x7D: 1255, +0x7E: 1256, 0x96: 10007, +0x97: 10029, 0x98: 10006, +0xC8: 1250, 0xC9: 1251, +0xCA: 1254, 0xCB: 1253, + + /* shapefile DBF extension */ +0x00: 20127, 0x08: 865, +0x09: 437, 0x0A: 850, +0x0B: 437, 0x0D: 437, +0x0E: 850, 0x0F: 437, +0x10: 850, 0x11: 437, +0x12: 850, 0x13: 932, +0x14: 850, 0x15: 437, +0x16: 850, 0x17: 865, +0x18: 437, 0x19: 437, +0x1A: 850, 0x1B: 437, +0x1C: 863, 0x1D: 850, +0x1F: 852, 0x22: 852, +0x23: 852, 0x24: 860, +0x25: 850, 0x26: 866, +0x37: 850, 0x40: 852, +0x4D: 936, 0x4E: 949, +0x4F: 950, 0x50: 874, +0x57: 1252, 0x58: 1252, +0x59: 1252, + +0xFF: 16969 +}; + +/* TODO: find an actual specification */ +function dbf_to_aoa(buf, opts) { + var out = []; + /* TODO: browser based */ + var d = (new_raw_buf(1)); + switch(opts.type) { + case 'base64': d = s2a(Base64.decode(buf)); break; + case 'binary': d = s2a(buf); break; + case 'buffer': + case 'array': d = buf; break; + } + prep_blob(d, 0); + /* header */ + var ft = d.read_shift(1); + var memo = false; + var vfp = false; + switch(ft) { + case 0x03: break; + case 0x30: vfp = true; memo = true; break; + case 0x31: vfp = true; break; + case 0x83: memo = true; break; + case 0x8B: memo = true; break; + case 0xF5: memo = true; break; + default: process.exit(); throw new Error("DBF Unsupported Version: " + ft.toString(16)); + } + var filedate = new Date(d.read_shift(1) + 1900, d.read_shift(1) - 1, d.read_shift(1)); + var nrow = d.read_shift(4); + var fpos = d.read_shift(2); + var rlen = d.read_shift(2); + d.l+=16; + + var flags = d.read_shift(1); + //if(memo && ((flags & 0x02) === 0)) throw new Error("DBF Flags " + flags.toString(16) + " ft " + ft.toString(16)); + + /* codepage present in FoxPro */ + var current_cp = 1252; + if(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]]; + d.l+=1; + + d.l+=2; + var fields = [], field = {}; + var hend = fpos - 10 - (vfp ? 264 : 0); + while(d.l < hend) { + field = {}; + field.name = cptable.utils.decode(current_cp, d.slice(d.l, d.l+10)).replace(/[\u0000\r\n].*$/g,""); + d.l += 11; + field.type = String.fromCharCode(d.read_shift(1)); + field.offset = d.read_shift(4); + field.len = d.read_shift(1); + field.dec = d.read_shift(1); + if(field.name.length) fields.push(field); + d.l += 14; + switch(field.type) { + // case 'B': break; // Binary + case 'C': break; // character + case 'D': break; // date + case 'F': break; // floating point + // case 'G': break; // General + case 'I': break; // long + case 'L': break; // boolean + case 'M': break; // memo + case 'N': break; // number + // case 'O': break; // double + // case 'P': break; // Picture + case 'T': break; // datetime + case 'Y': break; // currency + case '0': break; // null ? + case '+': break; // autoincrement + case '@': break; // timestamp + default: throw new Error('Unknown Field Type: ' + field.type); + } + } + if(d[d.l] !== 0x0D) d.l = fpos-1; + if(d.read_shift(1) !== 0x0D) throw new Error("DBF Terminator not found " + d.l + " " + d[d.l]); + d.l = fpos; + /* data */ + var R = 0, C = 0; + out[0] = []; + for(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name; + while(nrow-- > 0) { + if(d[d.l] === 0x2A) { d.l+=rlen; continue; } + ++d.l; + out[++R] = []; C = 0; + for(C = 0; C != fields.length; ++C) { + var dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len; + prep_blob(dd, 0); + var s = cptable.utils.decode(current_cp, dd); + switch(fields[C].type) { + case 'C': + out[R][C] = cptable.utils.decode(current_cp, dd); + out[R][C] = out[R][C].trim(); + break; + case 'D': + if(s.length === 8) out[R][C] = new Date(+s.substr(0,4), +s.substr(4,2)-1, +s.substr(6,2)); + else out[R][C] = s; + break; + case 'F': out[R][C] = parseFloat(s.trim()); break; + case 'I': out[R][C] = dd.read_shift(4, 'i'); break; + case 'L': switch(s.toUpperCase()) { + case 'Y': case 'T': out[R][C] = true; break; + case 'N': case 'F': out[R][C] = false; break; + case ' ': case '?': out[R][C] = false; break; /* NOTE: technically unitialized */ + default: throw new Error("DBF Unrecognized L:|" + s + "|"); + } break; + case 'M': /* TODO: handle memo files */ + if(!memo) throw new Error("DBF Unexpected MEMO for type " + ft.toString(16)); + out[R][C] = "##MEMO##" + dd.read_shift(4); + break; + case 'N': out[R][C] = +s.replace(/\u0000/g,"").trim(); break; + case 'T': + var day = dd.read_shift(4), ms = dd.read_shift(4); + throw new Error(day + " | " + ms); + //out[R][C] = new Date(); // FIXME!!! + //break; + case 'Y': out[R][C] = dd.read(4,'i')/1e4; break; + case '0': + if(fields[C].name === '_NullFlags') break; + /* falls through */ + default: throw new Error("DBF Unsupported data type " + fields[C].type); + } + } + } + if(d.l < d.length && d[d.l++] != 0x1A) throw new Error("DBF EOF Marker missing " + (d.l-1) + " of " + d.length + " " + d[d.l-1].toString(16)); + return out; +} + +function dbf_to_sheet(buf, opts) { + var o = opts || {}; + if(!o.dateNF) o.dateNF = "yyyymmdd"; + return aoa_to_sheet(dbf_to_aoa(buf, o), o); +} + +function dbf_to_workbook(buf, opts) { + try { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); } + catch(e) { if(opts && opts.WTF) throw e; } + return ({SheetNames:[],Sheets:{}}); +} + return { + to_workbook: dbf_to_workbook, + to_sheet: dbf_to_sheet + }; +})(); /* 18.4.1 charset to codepage mapping */ var CS2CP = ({ 0: 1252, /* ANSI */ @@ -6113,8 +6299,8 @@ function parse_drawing(data, rels) { - 20.5.2.16 graphicFrame CT_GraphicalObjectFrame - 20.1.2.2.16 graphic CT_GraphicalObject - 20.1.2.2.17 graphicData CT_GraphicalObjectData - - chart reference - the actual type is based on the URI of the graphicData + - chart reference + the actual type is based on the URI of the graphicData TODO: handle embedded charts and other types of graphics */ var id = (data.match(/]*r:id="([^"]*)"/)||["",""])[1]; @@ -6242,6 +6428,14 @@ function parse_comments_bin(data, opts) { } function write_comments_bin(data, opts) { } +RELS.DS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet"; +RELS.MS = "http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet"; + +/* macro and dialog sheet stubs */ +function parse_ds_bin() { return {'!type':'dialog'}; } +function parse_ds_xml() { return {'!type':'dialog'}; } +function parse_ms_bin() { return {'!type':'macro'}; } +function parse_ms_xml() { return {'!type':'macro'}; } /* TODO: it will be useful to parse the function str */ var rc_to_a1 = (function(){ var rcregex = /(^|[^A-Za-z])R(\[?)(-?\d+|)\]?C(\[?)(-?\d+|)\]?/g; @@ -10166,6 +10360,16 @@ function parse_cs(data, name, opts, rels, wb, themes, styles) { return parse_cs_xml((data), opts, rels, wb, themes, styles); } +function parse_ms(data, name, opts, rels, wb, themes, styles) { + if(name.slice(-4)===".bin") return parse_ms_bin((data), opts, rels, wb, themes, styles); + return parse_ms_xml((data), opts, rels, wb, themes, styles); +} + +function parse_ds(data, name, opts, rels, wb, themes, styles) { + if(name.slice(-4)===".bin") return parse_ds_bin((data), opts, rels, wb, themes, styles); + return parse_ds_xml((data), opts, rels, wb, themes, styles); +} + function parse_sty(data, name, themes, opts) { if(name.slice(-4)===".bin") return parse_sty_bin((data), themes, opts); return parse_sty_xml((data), themes, opts); @@ -13790,18 +13994,18 @@ var fix_write_opts = fix_opts_func([ ['WTF', false] /* WTF mode (throws errors) */ ]); +function get_sheet_type(n) { + if(RELS.WS.indexOf(n) > -1) return "sheet"; + if(RELS.CS && n == RELS.CS) return "chart"; + if(RELS.DS && n == RELS.DS) return "dialog"; + if(RELS.MS && n == RELS.MS) return "macro"; + if(!n || !n.length) return "sheet"; + return n; +} function safe_parse_wbrels(wbrels, sheets) { if(!wbrels) return 0; - function get_type(n) { - if(RELS.WS.indexOf(n) > -1) return "sheet"; - if(RELS.CS && n == RELS.CS) return "chart"; - if(RELS.DS && n == RELS.DS) return "dialog"; - if(RELS.MS && n == RELS.MS) return "macro"; - if(!n || !n.length) return "sheet"; - return n; - } try { - wbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_type(wbrels['!id'][w.id].Type)]; }); + wbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; }); } catch(e) { return null; } return !wbrels || wbrels.length === 0 ? null : wbrels; } @@ -13823,6 +14027,8 @@ function safe_parse_sheet(zip, path, relsPath, sheet, sheetRels, sheets, stype, var crelsp = get_rels_path(chartp); cs = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp,true), chartp), wb, cs); break; + case 'macro': sheets[sheet]=parse_ms(data, path, opts,sheetRels[sheet], wb, themes, styles); break; + case 'dialog': sheets[sheet]=parse_ds(data, path, opts,sheetRels[sheet], wb, themes, styles); break; } } catch(e) { if(opts.WTF) throw e; } } @@ -13982,6 +14188,7 @@ function write_zip(wb, opts) { opts.rels = {}; opts.wbrels = {}; opts.Strings = []; opts.Strings.Count = 0; opts.Strings.Unique = 0; var wbext = opts.bookType == "xlsb" ? "bin" : "xml"; + var vbafmt = opts.bookType == "xlsb" || opts.bookType == "xlsm"; var ct = { workbooks: [], sheets: [], calcchains: [], themes: [], styles: [], coreprops: [], extprops: [], custprops: [], strs:[], comments: [], vba: [], TODO:[], rels:[], xmlns: "" }; @@ -14046,6 +14253,13 @@ f = "docProps/app.xml"; ct.styles.push(f); add_rels(opts.wbrels, ++rId, "styles." + wbext, RELS.STY); + if(wb.vbaraw && vbafmt) { + f = "xl/vbaProject.bin"; + zip.file(f, wb.vbaraw); + ct.vba.push(f); + add_rels(opts.wbrels, ++rId, "vbaProject.bin", RELS.VBA); + } + zip.file("[Content_Types].xml", write_ct(ct, opts)); zip.file('_rels/.rels', write_rels(opts.rels)); zip.file('xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels)); @@ -14087,6 +14301,8 @@ function readSync(data, opts) { case 0x3C: return parse_xlml(d, o); case 0x50: if(n[1] == 0x4B && n[2] < 0x20 && n[3] < 0x20) return read_zip(d, o); break; case 0xEF: return parse_xlml(d, o); + case 0x03: case 0x83: case 0x8B: return DBF.to_workbook(d, o); + case 0x30: case 0x31: if(n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o); break; default: throw new Error("Unsupported file " + n.join("|")); } throw new Error("Unsupported file format " + n.join("|"));