- more structure in the theme parsing
- cellDates option on parsing side creates date cells
- cellDates option on writing side creates cells with type 'd'
- cell types clarified, type 'str' phased out
- README clarifications
- more tests to ensure date consistency
- more test cases for ODS
- parsexmltag and other hot functions now better optimized for v8
- monomorphic functions (different types -> different funcs)
- more efficient decode_range implementation when source is trusted
- regular expressions cached and simplified without breaking correctness
- more efficient utf8 techniques when available
- XLSX: large functions broken down into sub-functions (e.g. `parse_ws_xml`)
- XLSB: avoid unnecessary binds
- XLSB: assume no exotic codepage exists (no one else tries to write XLSB)
- demo exposes rABS / worker / transferable options
- more tests
- jszip updated to 2.3.0
- SSF updated to 0.8.1
- codepage updated to 1.3.1
- jscs linting to check for trailing comma issues (h/t @altkatz)
- IE: phased out lazy string indexing in favor of charCodeAt
- XLSX: replaced certain operations in hot functions with faster alternatives
- updated SSF to 0.7.1
- improved coverage in tests
- eliminated functional constructs in hot functions
- format try-catch block extracted into new function
- cpexcel + codepage updated to 1.2.0
- more efficient (and correct) clean implementation of RGB/HSL/tint algorithms
- xlsx binary --all option enables every extra formatting and saving option
- column widths parsed and saved (requires cellStyles:true)
- basic style + theme parsing, option .cellStyles (h/t @eladxxx)
- more XLSB writing stubs
- correct resolution of .xml/.bin files
- sheet_to_json improvements from js-xls
o opts.header = 1 for array of arrays
o opts.header = 'A' for spreadsheet column labels
o custom opts.header array for custom labels
o opts.range = n starts from row n
o opts.range = range restricts writer to work within the specified range
- Makefile adapted to work with cygwin on windows
- require cpexcel instead of full codepage library
- hardcode the unescapexml regexp
- utf8read short circuit for ASCII strings
- cellFormulae also acts on XLSX/XLSM
- bin/xlsx.njs do not process formulae unless requested
- read BOM, handle UTF16LE-encoded XML
- handle namespaces in [Content_Types].xml
- parse workbook rels to determine sheet files
- numbers OSX boolean support (apparently requires "0" or "1")
- XLSX force "General" style to be serialized, omit implied cell type and style
- updated SSF to 0.7.0 (h/t @sysarchitect)
- updated jszip to 2.2.2
- removed old tests/files path, replaced with test_files
- themes written
- ignore potential existence of thumbnail when calculating relationship ids
- very basic XLSX / XLSM write support with roundtrip tests (XLSB stubs)
- reorganized source tree
- new XLSB range check ensures that A1 is not emitted for empty sheets
- SSF table emitted in output (consistent with js-xls)
- CLI supports writing
Backwards-incompatible changes:
o new Property aliases (see CORE_PROPS and EXT_PROPS)
o FILETIME custom properties parsed as JS Dates
o `xlsx2csv` -> `xlsx` (and `bin/xlsx{2csv,}.njs`)
- updated SSF to 0.6.5
- XLSB 'dbcs' uses codepage
- README bugfix (h/t @noodles)
- new tests: rawjson and json baselines generated by hand
- single cell ranges are encoded as cells ("A1" instead of "A1:A1") (h/t @clxl)
- source code alignment with js-xls
- all utilities are now wrapped in XLSX object
- codepage handling (h/t @xch89820)
- formula tag attributes (h/t @shaunthomas999)
- hyperlink support (h/t @sysarchitect, fixes#55)
- coverage test spinner (to prevent travis timeouts)
- SSF updated to 0.6.1 (h/t @notatestuser)
- more tests and related XLSB records
- XLSB plaintext comment and author
- preliminary work for XLSB formats
Most writers write sheets to
xl/worksheets/sheetN.xml (where N is 1-indexed)
Numbers for iOS apparently writes to
xl/worksheets/sheet.xml (for first sheet)
xl/worksheets/sheetN.xml (N>1, 0-indexed -- sheet1.xml corresponds to 2nd sheet)
The right thing to do is to dig into workbook rels, but that's for another day
- opts.sheetRows limits parsing; default (0) parses all rows
- added -n mode to xlsx2csv to control number of rows
- !ref will be adjusted; !fullref holds full range
- option bookFiles controls whether zip files and keys are written to object
*** Default has been flipped from "true" to "false"
- updated SSF to 0.5.8
- updated test_files to 20140216 (tests also look at 2013 XLSB)
- added dist files (make dist)
- opts.bookDeps parses calc chain; now chains are not parsed by default
- getzipdata safe option obviates some try-catch blocks
- parsing cell type 'd' (h/t @malphettes, yet again :)
- opts.WTF throws on errors
- cellHTML controls HTML generation
- cellFormula controls formula output
- sheetStubs now defaults to false
- cleaned up unnecessary CSV quotes (fixed#45)
- updated test_files to 20140211
- updated SSF to 0.5.7
- removed unused main function
- removed some dead code
- cell.r holds the raw rich text, cell.h now holds the html
(version 0.5.0 cell.raw -> cell.r, cell.r -> cell.h)
- similar changes to comments and XLSB generation
- removed some unused binary methods
Cell object stores the formatted text in the `.w` field
- Raw format and types are preserved in the `.t`, `.v` fields
- Accessors have been updated to use the field
updates for older OOXML:
- ECMA-376 makes reference to old sstItem shared string item
- [MS-XLSX] xmlns for workbook
- XLSB basic support for number formats
- removed extraneous Strings table element
- formatting xml tags (rich_stress_test)
- updating test_files to 20130130