@@ -9,7 +9,7 @@ var _strrev = function(x) { return String(x).split("").reverse().join("");};
9
9
function fill ( c , l ) { return new Array ( l + 1 ) . join ( c ) ; }
10
10
function pad ( v , d , c ) { var t = String ( v ) ; return t . length >= d ?t :( fill ( c || 0 , d - t . length ) + t ) ; }
11
11
function rpad ( v , d , c ) { var t = String ( v ) ; return t . length >= d ?t :( t + fill ( c || 0 , d - t . length ) ) ; }
12
- SSF . version = '0.5.8 ' ;
12
+ SSF . version = '0.5.9 ' ;
13
13
/* Options */
14
14
var opts_fmt = { } ;
15
15
function fixopts ( o ) { for ( var y in opts_fmt ) if ( o [ y ] === undefined ) o [ y ] = opts_fmt [ y ] ; }
@@ -246,9 +246,10 @@ var write_num = function(type, fmt, val) {
246
246
o = Math . round ( val * Math . pow ( 10 , r [ 1 ] . length ) ) ;
247
247
return String ( o / Math . pow ( 10 , r [ 1 ] . length ) ) . replace ( / ^ ( [ ^ \. ] + ) $ / , "$1." + r [ 1 ] ) . replace ( / \. $ / , "." + r [ 1 ] ) . replace ( / \. ( [ 0 - 9 ] * ) $ / , function ( $$ , $1 ) { return "." + $1 + fill ( "0" , r [ 1 ] . length - $1 . length ) ; } ) ;
248
248
}
249
+ fmt = fmt . replace ( / ^ # + 0 / , "0" ) ;
249
250
if ( ( r = fmt . match ( / ^ ( 0 * ) \. ( # * ) $ / ) ) ) {
250
- o = Math . round ( val * Math . pow ( 10 , r [ 2 ] . length ) ) ;
251
- return String ( o * Math . pow ( 10 , - r [ 2 ] . length ) ) . replace ( / \. ( \d * [ 1 - 9 ] ) 0 * $ / , ".$1" ) . replace ( / ^ ( [ - ] ? \d * ) $ / , "$1." ) . replace ( / ^ 0 \. / , r [ 1 ] . length ?"0." :"." ) ;
251
+ o = Math . round ( aval * Math . pow ( 10 , r [ 2 ] . length ) ) ;
252
+ return sign + String ( o / Math . pow ( 10 , r [ 2 ] . length ) ) . replace ( / \. ( \d * [ 1 - 9 ] ) 0 * $ / , ".$1" ) . replace ( / ^ ( [ - ] ? \d * ) $ / , "$1." ) . replace ( / ^ 0 \. / , r [ 1 ] . length ?"0." :"." ) ;
252
253
}
253
254
if ( ( r = fmt . match ( / ^ # , # # 0 ( [ . ] ? ) $ / ) ) ) return sign + commaify ( String ( Math . round ( aval ) ) ) ;
254
255
if ( ( r = fmt . match ( / ^ # , # # 0 \. ( [ # 0 ] * 0 ) $ / ) ) ) {
@@ -423,7 +424,7 @@ SSF.load_table = function(tbl) { for(var i=0; i!=0x0188; ++i) if(tbl[i]) SSF.loa
423
424
make_ssf ( SSF ) ;
424
425
var XLSX = { } ;
425
426
( function ( XLSX ) {
426
- XLSX . version = '0.5.10-a ' ;
427
+ XLSX . version = '0.5.11 ' ;
427
428
var current_codepage , current_cptable , cptable ;
428
429
if ( typeof module !== "undefined" && typeof require !== 'undefined' ) {
429
430
if ( typeof cptable === 'undefined' ) cptable = require ( 'codepage' ) ;
@@ -476,7 +477,7 @@ function parsexmltag(tag) {
476
477
var z = { '0' : words [ 0 ] } ;
477
478
if ( words . length === 1 ) return z ;
478
479
( tag . match ( attregexg ) || [ ] ) . map (
479
- function ( x ) { var y = x . match ( attregex ) ; z [ y [ 1 ] ] = y [ 2 ] . substr ( 1 , y [ 2 ] . length - 2 ) ; } ) ;
480
+ function ( x ) { var y = x . match ( attregex ) ; z [ y [ 1 ] . replace ( / ^ [ a - z A - Z ] * : / , "" ) ] = y [ 2 ] . substr ( 1 , y [ 2 ] . length - 2 ) ; } ) ;
480
481
return z ;
481
482
}
482
483
@@ -889,7 +890,9 @@ var parse_sst_bin = function(data) {
889
890
case 'BrtBeginSst' : s . Count = val [ 0 ] ; s . Unique = val [ 1 ] ; break ;
890
891
case 'BrtSSTItem' : s . push ( val ) ; break ;
891
892
case 'BrtEndSst' : return true ;
892
- default : throw new Error ( "Unexpected record " + R . n ) ;
893
+ case 'BrtFRTBegin' : pass = true ; break ;
894
+ case 'BrtFRTEnd' : pass = false ; break ;
895
+ default : if ( ! pass ) throw new Error ( "Unexpected record " + RT + " " + R . n ) ;
893
896
}
894
897
} ) ;
895
898
return s ;
@@ -906,7 +909,7 @@ function parseNumFmts(t) {
906
909
case '<numFmts' : case '</numFmts>' : case '<numFmts/>' : break ;
907
910
case '<numFmt' : {
908
911
var f = unescapexml ( y . formatCode ) , i = parseInt ( y . numFmtId , 10 ) ;
909
- styles . NumberFmt [ i ] = f ; SSF . load ( f , i ) ;
912
+ styles . NumberFmt [ i ] = f ; if ( i > 0 ) SSF . load ( f , i ) ;
910
913
} break ;
911
914
default : throw 'unrecognized ' + y [ 0 ] + ' in numFmts' ;
912
915
}
@@ -1036,7 +1039,7 @@ function parse_sty_bin(data) {
1036
1039
case 'BrtEndColorPalette' : state = "" ; break ;
1037
1040
case 'BrtFRTBegin' : pass = true ; break ;
1038
1041
case 'BrtFRTEnd' : pass = false ; break ;
1039
- // default: if(!pass) throw new Error("Unexpected record " + RT + " " + R.n);
1042
+ default : if ( ! pass ) throw new Error ( "Unexpected record " + RT + " " + R . n ) ;
1040
1043
}
1041
1044
} ) ;
1042
1045
return styles ;
@@ -1547,6 +1550,7 @@ var parse_ws_bin = function(data, opts) {
1547
1550
case 'BrtCellIsst' :
1548
1551
case 'BrtCellReal' :
1549
1552
case 'BrtCellRk' :
1553
+ case 'BrtCellSt' :
1550
1554
p = { t :val [ 2 ] } ;
1551
1555
switch ( val [ 2 ] ) {
1552
1556
case 'n' : p . v = val [ 1 ] ; break ;
@@ -1576,10 +1580,12 @@ var parse_ws_bin = function(data, opts) {
1576
1580
case 'BrtSheetCalcProp' : break ; // TODO
1577
1581
case 'BrtBeginWsViews' : break ; // TODO
1578
1582
case 'BrtBeginWsView' : break ; // TODO
1583
+ case 'BrtPane' : break ; // TODO
1584
+ case 'BrtSel' : break ; // TODO
1579
1585
case 'BrtEndWsView' : break ; // TODO
1580
1586
case 'BrtEndWsViews' : break ; // TODO
1581
- case 'BrtSel' : break ; // TODO
1582
1587
case 'BrtACBegin' : break ; // TODO
1588
+ case 'BrtRwDescent' : break ; // TODO
1583
1589
case 'BrtACEnd' : break ; // TODO
1584
1590
case 'BrtWsFmtInfoEx14' : break ; // TODO
1585
1591
case 'BrtWsFmtInfo' : break ; // TODO
@@ -1598,8 +1604,44 @@ var parse_ws_bin = function(data, opts) {
1598
1604
case 'BrtBeginMergeCells' : break ; // TODO
1599
1605
case 'BrtMergeCell' : break ; // TODO
1600
1606
case 'BrtEndMergeCells' : break ; // TODO
1607
+ case 'BrtHLink' : break ; // TODO
1608
+ case 'BrtDrawing' : break ; // TODO
1601
1609
case 'BrtLegacyDrawing' : break ; // TODO
1602
- //default: if(!pass) throw new Error("Unexpected record " + R.n);
1610
+ case 'BrtPhoneticInfo' : break ; // TODO
1611
+ case 'BrtBeginHeaderFooter' : break ; // TODO
1612
+ case 'BrtEndHeaderFooter' : break ; // TODO
1613
+ case 'BrtBrk' : break ; // TODO
1614
+ case 'BrtBeginRwBrk' : break ; // TODO
1615
+ case 'BrtEndRwBrk' : break ; // TODO
1616
+ case 'BrtBeginColBrk' : break ; // TODO
1617
+ case 'BrtEndColBrk' : break ; // TODO
1618
+ case 'BrtBeginUserShViews' : break ; // TODO
1619
+ case 'BrtBeginUserShView' : break ; // TODO
1620
+ case 'BrtEndUserShView' : break ; // TODO
1621
+ case 'BrtEndUserShViews' : break ; // TODO
1622
+ case 'BrtBkHim' : break ; // TODO
1623
+ case 'BrtBeginOleObjects' : break ; // TODO
1624
+ case 'BrtOleObject' : break ; // TODO
1625
+ case 'BrtEndOleObjects' : break ; // TODO
1626
+ case 'BrtBeginListParts' : break ; // TODO
1627
+ case 'BrtListPart' : break ; // TODO
1628
+ case 'BrtEndListParts' : break ; // TODO
1629
+ case 'BrtBeginSortState' : break ; // TODO
1630
+ case 'BrtBeginSortCond' : break ; // TODO
1631
+ case 'BrtEndSortCond' : break ; // TODO
1632
+ case 'BrtEndSortState' : break ; // TODO
1633
+ case 'BrtBeginConditionalFormatting' : break ; // TODO
1634
+ case 'BrtEndConditionalFormatting' : break ; // TODO
1635
+ case 'BrtBeginCFRule' : break ; // TODO
1636
+ case 'BrtEndCFRule' : break ; // TODO
1637
+ case 'BrtBeginDVals' : break ; // TODO
1638
+ case 'BrtDVal' : break ; // TODO
1639
+ case 'BrtEndDVals' : break ; // TODO
1640
+ case 'BrtRangeProtection' : break ; // TODO
1641
+ case 'BrtBeginActiveXControls' : break ; // TODO
1642
+ case 'BrtActiveX' : break ; // TODO
1643
+ case 'BrtEndActiveXControls' : break ; // TODO
1644
+ default : if ( ! pass ) throw new Error ( "Unexpected record " + R . n ) ;
1603
1645
}
1604
1646
} , opts ) ;
1605
1647
s [ "!ref" ] = encode_range ( ref ) ;
@@ -1873,7 +1915,7 @@ var parse_wb_bin = function(data) {
1873
1915
case 'BrtFRTBegin' : pass = true ; break ;
1874
1916
case 'BrtFRTEnd' : pass = false ; break ;
1875
1917
case 'BrtEndBook' : break ;
1876
- // default: if(!pass) throw new Error("Unexpected record " + R.n);
1918
+ default : if ( ! pass ) throw new Error ( "Unexpected record " + R . n ) ;
1877
1919
}
1878
1920
} ) ;
1879
1921
@@ -2833,7 +2875,7 @@ function parseZip(zip, opts) {
2833
2875
Sheets : sheets ,
2834
2876
SheetNames : props . SheetNames ,
2835
2877
Strings : strs ,
2836
- Styles : styles
2878
+ Styles : styles ,
2837
2879
} ;
2838
2880
if ( opts . bookFiles ) {
2839
2881
out . keys = keys ;
0 commit comments