2016-12-31 08:20:45 +00:00
/* xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */
2017-03-28 22:03:03 +00:00
var XLSX = { } ; ( function make _xlsx ( XLSX ) { XLSX . version = "0.9.7" ; var current _codepage = 1200 , current _cptable ; if ( typeof module !== "undefined" && typeof require !== "undefined" ) { if ( typeof cptable === "undefined" ) cptable = require ( "./dist/cpexcel.js" ) ; current _cptable = cptable [ current _codepage ] } function reset _cp ( ) { set _cp ( 1200 ) } var set _cp = function ( cp ) { current _codepage = cp } ; function char _codes ( data ) { var o = [ ] ; for ( var i = 0 , len = data . length ; i < len ; ++ i ) o [ i ] = data . charCodeAt ( i ) ; return o } var debom = function ( data ) { var c1 = data . charCodeAt ( 0 ) , c2 = data . charCodeAt ( 1 ) ; if ( c1 == 255 && c2 == 254 ) return data . substr ( 2 ) ; if ( c1 == 254 && c2 == 255 ) return data . substr ( 2 ) ; if ( c1 == 65279 ) return data . substr ( 1 ) ; return data } ; var _getchar = function _gc1 ( x ) { return String . fromCharCode ( x ) } ; if ( typeof cptable !== "undefined" ) { set _cp = function ( cp ) { current _codepage = cp ; current _cptable = cptable [ cp ] } ; debom = function ( data ) { if ( data . charCodeAt ( 0 ) === 255 && data . charCodeAt ( 1 ) === 254 ) { return cptable . utils . decode ( 1200 , char _codes ( data . substr ( 2 ) ) ) } return data } ; _getchar = function _gc2 ( x ) { if ( current _codepage === 1200 ) return String . fromCharCode ( x ) ; return cptable . utils . decode ( current _codepage , [ x & 255 , x >> 8 ] ) [ 0 ] } } var Base64 = function make _b64 ( ) { var map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" ; return { encode : function ( input , utf8 ) { var o = "" ; var c1 , c2 , c3 , e1 , e2 , e3 , e4 ; for ( var i = 0 ; i < input . length ; ) { c1 = input . charCodeAt ( i ++ ) ; c2 = input . charCodeAt ( i ++ ) ; c3 = input . charCodeAt ( i ++ ) ; e1 = c1 >> 2 ; e2 = ( c1 & 3 ) << 4 | c2 >> 4 ; e3 = ( c2 & 15 ) << 2 | c3 >> 6 ; e4 = c3 & 63 ; if ( isNaN ( c2 ) ) { e3 = e4 = 64 } else if ( isNaN ( c3 ) ) { e4 = 64 } o += map . charAt ( e1 ) + map . charAt ( e2 ) + map . charAt ( e3 ) + map . charAt ( e4 ) } return o } , decode : function b64 _decode ( input , utf8 ) { var o = "" ; var c1 , c2 , c3 ; var e1 , e2 , e3 , e4 ; input = input . replace ( /[^A-Za-z0-9\+\/\=]/g , "" ) ; for ( var i = 0 ; i < input . length ; ) { e1 = map . indexOf ( input . charAt ( i ++ ) ) ; e2 = map . indexOf ( input . charAt ( i ++ ) ) ; e3 = map . indexOf ( input . charAt ( i ++ ) ) ; e4 = map . indexOf ( input . charAt ( i ++ ) ) ; c1 = e1 << 2 | e2 >> 4 ; c2 = ( e2 & 15 ) << 4 | e3 >> 2 ; c3 = ( e3 & 3 ) << 6 | e4 ; o += String . fromCharCode ( c1 ) ; if ( e3 != 64 ) { o += String . fromCharCode ( c2 ) } if ( e4 != 64 ) { o += String . fromCharCode ( c3 ) } } return o } } } ( ) ; var has _buf = typeof Buffer !== "undefined" ; function new _raw _buf ( len ) { return new ( has _buf ? Buffer : Array ) ( len ) } function s2a ( s ) { if ( has _buf ) return new Buffer ( s , "binary" ) ; return s . split ( "" ) . map ( function ( x ) { return x . charCodeAt ( 0 ) & 255 } ) } var bconcat = function ( bufs ) { return [ ] . concat . apply ( [ ] , bufs ) } ; var chr0 = /\u0000/g , chr1 = /[\u0001-\u0006]/ ; var SSF = { } ; var make _ssf = function make _ssf ( SSF ) { SSF . version = "0.9.0" ; function _strrev ( x ) { var o = "" , i = x . length - 1 ; while ( i >= 0 ) o += x . charAt ( i -- ) ; return o } function fill ( c , l ) { var o = "" ; while ( o . length < l ) o += c ; return o } function pad0 ( v , d ) { var t = "" + v ; return t . length >= d ? t : fill ( "0" , d - t . length ) + t } function pad _ ( v , d ) { var t = "" + v ; return t . length >= d ? t : fill ( " " , d - t . length ) + t } function rpad _ ( v , d ) { var t = "" + v ; return t . length >= d ? t : t + fill ( " " , d - t . length ) } function pad0r1 ( v , d ) { var t = "" + Math . round ( v ) ; return t . length >= d ? t : fill ( "0" , d - t . length ) + t } function pad0r2 ( v , d ) { var t = "" + v ; return t . length >= d ? t : fill ( "0" , d - t . length ) + t } var p2 _32 = Math . pow ( 2 , 32 ) ; function pad0r ( v , d ) { if ( v > p2 _32 || v < - p2 _32 ) return pad0r1 ( v , d ) ; var i = Math . round ( v ) ; return pad0r2 ( i , d ) } function isgeneral ( s , i ) { i = i || 0 ; return s . length >= 7 + i && ( s . charCodeAt ( i ) | 32 ) === 103 && ( s . charCodeAt ( i + 1 ) | 32 ) === 101 && ( s . charCodeAt ( i + 2 ) | 32 ) === 110 && ( s . charCodeAt ( i + 3 ) | 32 ) === 101 && ( s . charCodeAt ( i + 4 ) | 32 ) === 114 && ( s . charCodeAt ( i + 5 ) | 32 ) === 97 && ( s . charCodeAt ( i + 6 ) | 32 ) === 108 } var opts _fmt = [ [ "date1904" , 0 ] , [ "output" , "" ] , [ "WTF" , false ] ] ; function fixopts ( o ) { for ( var y = 0 ; y != opts _fmt . length ; ++ y ) if ( o [ opts _fmt [ y ] [ 0 ] ] === undefined ) o [ opts _fmt [ y ] [ 0 ] ] = opts _fmt [ y ] [ 1 ] } SSF . opts = opts _fmt ; var table _fmt = { 0 : "General" , 1 : "0" , 2 : "0.00" , 3 : "#,##0" , 4 : "#,##0.00" , 9 : "0%" , 10 : "0.00%" , 11 : "0.00E+00" , 12 : "# ?/?" , 13 : "# ??/??" , 14 : "m/d/yy" , 15 : "d-mmm-yy" , 16 : "d-mmm" , 17 : "mmm-yy" , 18 : "h:mm AM/PM" , 19 : "h:mm:ss AM/PM" , 20 : "h:mm" , 21 : "h:mm:ss" , 22 : "m/d/yy h:mm" , 37 : "#,##0 ;(#,##0)" , 38 : "#,##0 ;[Red](#,##0)" , 39 : "#,##0.00;(#,##0.00)" , 40 : "#,##0.00;[Red](#,##0.00)" , 45 : "mm:ss" , 46 : "[h]:mm:ss" , 47 : "mmss.0" , 48 : "##0.0E+0" , 49 : "@" , 56 : '"上午/下午 "hh"時"mm"分"ss"秒 "' , 65535 : "General" } ; var days = [ [ "Sun" , "Sunday" ] , [ "Mon" , "Monday" ] , [ "Tue" , "Tuesday" ] , [ "Wed" , "Wednesday" ] , [ "Thu" , " Thurs
if ( R !== - 1 && dad [ R ] !== R ) dad [ i ] = dad [ R ] ; else if ( L !== - 1 && dad [ L ] !== L ) dad [ i ] = dad [ L ] } for ( i = 1 ; i < pl ; ++ i ) { if ( FI [ i ] . type === 0 ) continue ; j = dad [ i ] ; if ( j === 0 ) FP [ i ] = FP [ 0 ] + "/" + FP [ i ] ; else while ( j !== 0 ) { FP [ i ] = FP [ j ] + "/" + FP [ i ] ; j = dad [ j ] } dad [ i ] = 0 } FP [ 0 ] += "/" ; for ( i = 1 ; i < pl ; ++ i ) { if ( FI [ i ] . type !== 2 ) FP [ i ] += "/" ; FPD [ FP [ i ] ] = FI [ i ] } } function make _find _path ( FullPaths , Paths , FileIndex , files , root _name ) { var UCFullPaths = new Array ( FullPaths . length ) ; var UCPaths = new Array ( Paths . length ) , i ; for ( i = 0 ; i < FullPaths . length ; ++ i ) UCFullPaths [ i ] = FullPaths [ i ] . toUpperCase ( ) . replace ( chr0 , "" ) . replace ( chr1 , "!" ) ; for ( i = 0 ; i < Paths . length ; ++ i ) UCPaths [ i ] = Paths [ i ] . toUpperCase ( ) . replace ( chr0 , "" ) . replace ( chr1 , "!" ) ; return function find _path ( path ) { var k ; if ( path . charCodeAt ( 0 ) === 47 ) { k = true ; path = root _name + path } else k = path . indexOf ( "/" ) !== - 1 ; var UCPath = path . toUpperCase ( ) . replace ( chr0 , "" ) . replace ( chr1 , "!" ) ; var w = k === true ? UCFullPaths . indexOf ( UCPath ) : UCPaths . indexOf ( UCPath ) ; if ( w === - 1 ) return null ; return k === true ? FileIndex [ w ] : files [ Paths [ w ] ] } } function sleuth _fat ( idx , cnt , sectors , ssz , fat _addrs ) { var q ; if ( idx === ENDOFCHAIN ) { if ( cnt !== 0 ) throw "DIFAT chain shorter than expected" } else if ( idx !== - 1 ) { var sector = sectors [ idx ] , m = ( ssz >>> 2 ) - 1 ; if ( ! sector ) return ; for ( var i = 0 ; i < m ; ++ i ) { if ( ( q = _ _readInt32LE ( sector , i * 4 ) ) === ENDOFCHAIN ) break ; fat _addrs . push ( q ) } sleuth _fat ( _ _readInt32LE ( sector , ssz - 4 ) , cnt - 1 , sectors , ssz , fat _addrs ) } } function get _sector _list ( sectors , start , fat _addrs , ssz , chkd ) { var sl = sectors . length ; var buf , buf _chain ; if ( ! chkd ) chkd = new Array ( sl ) ; var modulus = ssz - 1 , j , jj ; buf = [ ] ; buf _chain = [ ] ; for ( j = start ; j >= 0 ; ) { chkd [ j ] = true ; buf [ buf . length ] = j ; buf _chain . push ( sectors [ j ] ) ; var addr = fat _addrs [ Math . floor ( j * 4 / ssz ) ] ; jj = j * 4 & modulus ; if ( ssz < 4 + jj ) throw "FAT boundary crossed: " + j + " 4 " + ssz ; if ( ! sectors [ addr ] ) break ; j = _ _readInt32LE ( sectors [ addr ] , jj ) } return { nodes : buf , data : _ _toBuffer ( [ buf _chain ] ) } } function make _sector _list ( sectors , dir _start , fat _addrs , ssz ) { var sl = sectors . length , sector _list = new Array ( sl ) ; var chkd = new Array ( sl ) , buf , buf _chain ; var modulus = ssz - 1 , i , j , k , jj ; for ( i = 0 ; i < sl ; ++ i ) { buf = [ ] ; k = i + dir _start ; if ( k >= sl ) k -= sl ; if ( chkd [ k ] === true ) continue ; buf _chain = [ ] ; for ( j = k ; j >= 0 ; ) { chkd [ j ] = true ; buf [ buf . length ] = j ; buf _chain . push ( sectors [ j ] ) ; var addr = fat _addrs [ Math . floor ( j * 4 / ssz ) ] ; jj = j * 4 & modulus ; if ( ssz < 4 + jj ) throw "FAT boundary crossed: " + j + " 4 " + ssz ; if ( ! sectors [ addr ] ) break ; j = _ _readInt32LE ( sectors [ addr ] , jj ) } sector _list [ k ] = { nodes : buf , data : _ _toBuffer ( [ buf _chain ] ) } } return sector _list } function read _directory ( dir _start , sector _list , sectors , Paths , nmfs , files , FileIndex ) { var blob ; var minifat _store = 0 , pl = Paths . length ? 2 : 0 ; var sector = sector _list [ dir _start ] . data ; var i = 0 , namelen = 0 , name , o , ctime , mtime ; for ( ; i < sector . length ; i += 128 ) { blob = sector . slice ( i , i + 128 ) ; prep _blob ( blob , 64 ) ; namelen = blob . read _shift ( 2 ) ; if ( namelen === 0 ) continue ; name = _ _utf16le ( blob , 0 , namelen - pl ) ; Paths . push ( name ) ; o = { name : name , type : blob . read _shift ( 1 ) , color : blob . read _shift ( 1 ) , L : blob . read _shift ( 4 , "i" ) , R : blob . read _shift ( 4 , "i" ) , C : blob . read _shift ( 4 , "i" ) , clsid : blob . read _shift ( 16 ) , state : blob . read _shift ( 4 , "i" ) } ; ctime = blob . read _shift ( 2 ) + blob . read _shift ( 2 ) + blob . read _shift ( 2 ) + blob . read _shift ( 2 ) ; if ( ctime !== 0 ) { o . ctime = ctime ; o . ct = read _date ( blob , blob . l - 8 ) } mtime = blob . read _shift ( 2 ) + blob . read _shift ( 2 ) + blob . read _shift ( 2 ) + blob . read _shift ( 2 ) ; if ( mtime !== 0 ) { o . mtime = mtime ; o . mt = read _date ( blob , blob . l - 8 ) } o . start = blob . read _shift ( 4 , "i" ) ; o . size = blob . read _shift ( 4 , "i" ) ; if ( o . type === 5 ) { minifat _store = o . start ; if ( nmfs > 0 && minifat _store !== ENDOFCHAIN ) sector _list [ minifat _store ] . name = "!StreamData" } else if ( o . size >= 4096 ) { o . storage = "fat" ; if ( sector _list [ o . start ] === undefined ) sector _list [ o . start ] = get _sector _list ( sectors , o . start , sector _list . fat _addrs , sector _list . ssz ) ; sector _list [ o . start ] . name = o . name ; o . content = sector _list [ o . start ] . data . slice ( 0 , o . size ) ; prep _blob ( o . content , 0 ) } else { o . storage = "minifat" ; if ( minifat _store !== ENDOFCHAIN && o . start !== ENDOFCHAIN ) { o . content = sector _list [ minifat _store ] . data . slice ( o . start * MSSZ , o . start * MSSZ + o . size ) ; prep _blob ( o . content , 0 ) } } files [ name ] = o ; FileIndex . push ( o ) } } function read _date ( blob , offset ) { return new Date ( ( _ _readUInt32LE ( blob , offset + 4 ) / 1e7 * Math . pow ( 2 , 32 ) + _ _readUInt32LE ( blob , offset ) / 1e7 - 11644473600 ) * 1e3 ) } var fs ; function readFileSync ( filename , op
} , 18 : { n : "ApplicationName" , t : VT _LPSTR } , 19 : { n : "DocumentSecurity" , t : VT _I4 } , 255 : { } } ; var SpecialProperties = { 2147483648 : { n : "Locale" , t : VT _UI4 } , 2147483651 : { n : "Behavior" , t : VT _UI4 } , 1919054434 : { } } ; ( function ( ) { for ( var y in SpecialProperties ) if ( SpecialProperties . hasOwnProperty ( y ) ) DocSummaryPIDDSI [ y ] = SummaryPIDSI [ y ] = SpecialProperties [ y ] } ) ( ) ; var CountryEnum = { 1 : "US" , 2 : "CA" , 3 : "" , 7 : "RU" , 20 : "EG" , 30 : "GR" , 31 : "NL" , 32 : "BE" , 33 : "FR" , 34 : "ES" , 36 : "HU" , 39 : "IT" , 41 : "CH" , 43 : "AT" , 44 : "GB" , 45 : "DK" , 46 : "SE" , 47 : "NO" , 48 : "PL" , 49 : "DE" , 52 : "MX" , 55 : "BR" , 61 : "AU" , 64 : "NZ" , 66 : "TH" , 81 : "JP" , 82 : "KR" , 84 : "VN" , 86 : "CN" , 90 : "TR" , 105 : "JS" , 213 : "DZ" , 216 : "MA" , 218 : "LY" , 351 : "PT" , 354 : "IS" , 358 : "FI" , 420 : "CZ" , 886 : "TW" , 961 : "LB" , 962 : "JO" , 963 : "SY" , 964 : "IQ" , 965 : "KW" , 966 : "SA" , 971 : "AE" , 972 : "IL" , 974 : "QA" , 981 : "IR" , 65535 : "US" } ; var XLSFillPattern = [ null , "solid" , "mediumGray" , "darkGray" , "lightGray" , "darkHorizontal" , "darkVertical" , "darkDown" , "darkUp" , "darkGrid" , "darkTrellis" , "lightHorizontal" , "lightVertical" , "lightDown" , "lightUp" , "lightGrid" , "lightTrellis" , "gray125" , "gray0625" ] ; function rgbify ( arr ) { return arr . map ( function ( x ) { return [ x >> 16 & 255 , x >> 8 & 255 , x & 255 ] } ) } var XLSIcv = rgbify ( [ 0 , 16777215 , 16711680 , 65280 , 255 , 16776960 , 16711935 , 65535 , 0 , 16777215 , 16711680 , 65280 , 255 , 16776960 , 16711935 , 65535 , 8388608 , 32768 , 128 , 8421376 , 8388736 , 32896 , 12632256 , 8421504 , 10066431 , 10040166 , 16777164 , 13434879 , 6684774 , 16744576 , 26316 , 13421823 , 128 , 16711935 , 16776960 , 65535 , 8388736 , 8388608 , 32896 , 255 , 52479 , 13434879 , 13434828 , 16777113 , 10079487 , 16751052 , 13408767 , 16764057 , 3368703 , 3394764 , 10079232 , 16763904 , 16750848 , 16737792 , 6710937 , 9868950 , 13158 , 3381606 , 13056 , 3355392 , 10040064 , 10040166 , 3355545 , 3355443 , 16777215 , 0 ] ) ; var ct2type = { "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" : "workbooks" , "application/vnd.ms-excel.binIndexWs" : "TODO" , "application/vnd.ms-excel.intlmacrosheet" : "TODO" , "application/vnd.ms-excel.binIndexMs" : "TODO" , "application/vnd.openxmlformats-package.core-properties+xml" : "coreprops" , "application/vnd.openxmlformats-officedocument.custom-properties+xml" : "custprops" , "application/vnd.openxmlformats-officedocument.extended-properties+xml" : "extprops" , "application/vnd.openxmlformats-officedocument.customXmlProperties+xml" : "TODO" , "application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty" : "TODO" , "application/vnd.ms-excel.comments" : "comments" , "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml" : "comments" , "application/vnd.ms-excel.pivotTable" : "TODO" , "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml" : "TODO" , "application/vnd.ms-office.chartcolorstyle+xml" : "TODO" , "application/vnd.ms-office.chartstyle+xml" : "TODO" , "application/vnd.ms-excel.calcChain" : "calcchains" , "application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml" : "calcchains" , "application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings" : "TODO" , "application/vnd.ms-office.activeX" : "TODO" , "application/vnd.ms-office.activeX+xml" : "TODO" , "application/vnd.ms-excel.attachedToolbars" : "TODO" , "application/vnd.ms-excel.connections" : "TODO" , "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml" : "TODO" , "application/vnd.ms-excel.externalLink" : "TODO" , "application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml" : "TODO" , "application/vnd.ms-excel.sheetMetadata" : "TODO" , "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml" : "TODO" , "application/vnd.ms-excel.pivotCacheDefinition" : "TODO" , "application/vnd.ms-excel.pivotCacheRecords" : "TODO" , "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml" : "TODO" , "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml" : "TODO" , "application/vnd.ms-excel.queryTable" : "TODO" , "application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml" : "TODO" , "application/vnd.ms-excel.userNames" : "TODO" , "application/vnd.ms-excel.revisionHeaders" : "TODO" , "application/vnd.ms-excel.revisionLog" : "TODO" , "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml" : "TODO" , " application / vnd . openxmlformats - officedocument . spreadshee
var ixfe = blob . read _shift ( 2 ) ; return { r : rw , c : col , ixfe : ixfe } } function parse _frtHeader ( blob ) { var rt = blob . read _shift ( 2 ) ; var flags = blob . read _shift ( 2 ) ; blob . l += 8 ; return { type : rt , flags : flags } } function parse _OptXLUnicodeString ( blob , length , opts ) { return length === 0 ? "" : parse _XLUnicodeString2 ( blob , length , opts ) } var HIDEOBJENUM = [ "SHOWALL" , "SHOWPLACEHOLDER" , "HIDEALL" ] ; var parse _HideObjEnum = parseuint16 ; function parse _XTI ( blob , length ) { var iSupBook = blob . read _shift ( 2 ) , itabFirst = blob . read _shift ( 2 , "i" ) , itabLast = blob . read _shift ( 2 , "i" ) ; return [ iSupBook , itabFirst , itabLast ] } function parse _RkRec ( blob , length ) { var ixfe = blob . read _shift ( 2 ) ; var RK = parse _RkNumber ( blob ) ; return [ ixfe , RK ] } function parse _AddinUdf ( blob , length , opts ) { blob . l += 4 ; length -= 4 ; var l = blob . l + length ; var udfName = parse _ShortXLUnicodeString ( blob , length , opts ) ; var cb = blob . read _shift ( 2 ) ; l -= blob . l ; if ( cb !== l ) throw new Error ( "Malformed AddinUdf: padding = " + l + " != " + cb ) ; blob . l += cb ; return udfName } function parse _Ref8U ( blob , length ) { var rwFirst = blob . read _shift ( 2 ) ; var rwLast = blob . read _shift ( 2 ) ; var colFirst = blob . read _shift ( 2 ) ; var colLast = blob . read _shift ( 2 ) ; return { s : { c : colFirst , r : rwFirst } , e : { c : colLast , r : rwLast } } } function parse _RefU ( blob , length ) { var rwFirst = blob . read _shift ( 2 ) ; var rwLast = blob . read _shift ( 2 ) ; var colFirst = blob . read _shift ( 1 ) ; var colLast = blob . read _shift ( 1 ) ; return { s : { c : colFirst , r : rwFirst } , e : { c : colLast , r : rwLast } } } var parse _Ref = parse _RefU ; function parse _FtCmo ( blob , length ) { blob . l += 4 ; var ot = blob . read _shift ( 2 ) ; var id = blob . read _shift ( 2 ) ; var flags = blob . read _shift ( 2 ) ; blob . l += 12 ; return [ id , ot , flags ] } function parse _FtNts ( blob , length ) { var out = { } ; blob . l += 4 ; blob . l += 16 ; out . fSharedNote = blob . read _shift ( 2 ) ; blob . l += 4 ; return out } function parse _FtCf ( blob , length ) { var out = { } ; blob . l += 4 ; blob . cf = blob . read _shift ( 2 ) ; return out } var FtTab = { 21 : parse _FtCmo , 19 : parsenoop , 18 : function ( blob , length ) { blob . l += 12 } , 17 : function ( blob , length ) { blob . l += 8 } , 16 : parsenoop , 15 : parsenoop , 13 : parse _FtNts , 12 : function ( blob , length ) { blob . l += 24 } , 11 : function ( blob , length ) { blob . l += 10 } , 10 : function ( blob , length ) { blob . l += 16 } , 9 : parsenoop , 8 : function ( blob , length ) { blob . l += 6 } , 7 : parse _FtCf , 6 : function ( blob , length ) { blob . l += 6 } , 4 : parsenoop , 0 : function ( blob , length ) { blob . l += 4 } } ; function parse _FtArray ( blob , length , ot ) { var s = blob . l ; var fts = [ ] ; while ( blob . l < s + length ) { var ft = blob . read _shift ( 2 ) ; blob . l -= 2 ; try { fts . push ( FtTab [ ft ] ( blob , s + length - blob . l ) ) } catch ( e ) { blob . l = s + length ; return fts } } if ( blob . l != s + length ) blob . l = s + length ; return fts } var parse _FontIndex = parseuint16 ; function parse _BOF ( blob , length ) { var o = { BIFFVer : 0 , dt : 0 } ; o . BIFFVer = blob . read _shift ( 2 ) ; length -= 2 ; if ( length >= 2 ) { o . dt = blob . read _shift ( 2 ) ; blob . l -= 2 } switch ( o . BIFFVer ) { case 1536 : case 1280 : case 2 : case 7 : break ; default : if ( length > 6 ) throw new Error ( "Unexpected BIFF Ver " + o . BIFFVer ) } blob . read _shift ( length ) ; return o } function parse _InterfaceHdr ( blob , length ) { if ( length === 0 ) return 1200 ; var q ; if ( ( q = blob . read _shift ( 2 ) ) !== 1200 ) throw new Error ( "InterfaceHdr codePage " + q ) ; return 1200 } function parse _WriteAccess ( blob , length , opts ) { if ( opts . enc ) { blob . l += length ; return "" } var l = blob . l ; var UserName = parse _XLUnicodeString ( blob , 0 , opts ) ; blob . read _shift ( length + l - blob . l ) ; return UserName } function parse _BoundSheet8 ( blob , length , opts ) { var pos = blob . read _shift ( 4 ) ; var hidden = blob . read _shift ( 1 ) & 3 ; var dt = blob . read _shift ( 1 ) ; switch ( dt ) { case 0 : dt = "Worksheet" ; break ; case 1 : dt = "Macrosheet" ; break ; case 2 : dt = "Chartsheet" ; break ; case 6 : dt = "VBAModule" ; break } var name = parse _ShortXLUnicodeString ( blob , 0 , opts ) ; if ( name . length === 0 ) name = "Sheet1" ; return { pos : pos , hs : hidden , dt : dt , name : name } } function parse _SST ( blob , length ) { var cnt = blob . read _shift ( 4 ) ; var ucnt = blob . read _shift ( 4 ) ; var strs = [ ] ; for ( var i = 0 ; i != ucnt ; ++ i ) { strs . push ( parse _XLUnicodeRichExtendedString ( blob ) ) } strs . Count = cnt ; strs . Unique = ucnt ; return strs } function parse _ExtSST ( blob , length ) { var extsst = { } ; extsst . dsst = blob . read _shift ( 2 ) ; blob . l += length - 2 ; return extsst } function parse _Row ( blob , length ) { var rw = blob . read _shift ( 2 ) , col = blob . read _shift ( 2 ) , Col = blob . read _shift ( 2 ) , rht = blob . read _shift ( 2 ) ; blob . read _shift ( 4 ) ; var flags = blob . read _shift ( 1 ) ; blob . read _shift ( 1 ) ; blob . read _shift ( 2 ) ; return { r : rw , c : col , cnt : Col - col } } function parse _ForceFullCalculation ( blob , le
} parsenoop ( blob , length - 12 ) ; return o } function parse _EncryptionVerifier ( blob , length ) { return parsenoop ( blob , length ) } function parse _RC4CryptoHeader ( blob , length ) { var o = { } ; var vers = o . EncryptionVersionInfo = parse _Version ( blob , 4 ) ; length -= 4 ; if ( vers . Minor != 2 ) throw "unrecognized minor version code: " + vers . Minor ; if ( vers . Major > 4 || vers . Major < 2 ) throw "unrecognized major version code: " + vers . Major ; o . Flags = blob . read _shift ( 4 ) ; length -= 4 ; var sz = blob . read _shift ( 4 ) ; length -= 4 ; o . EncryptionHeader = parse _EncryptionHeader ( blob , sz ) ; length -= sz ; o . EncryptionVerifier = parse _EncryptionVerifier ( blob , length ) ; return o } function parse _RC4Header ( blob , length ) { var o = { } ; var vers = o . EncryptionVersionInfo = parse _Version ( blob , 4 ) ; length -= 4 ; if ( vers . Major != 1 || vers . Minor != 1 ) throw "unrecognized version code " + vers . Major + " : " + vers . Minor ; o . Salt = blob . read _shift ( 16 ) ; o . EncryptedVerifier = blob . read _shift ( 16 ) ; o . EncryptedVerifierHash = blob . read _shift ( 16 ) ; return o } function crypto _CreatePasswordVerifier _Method1 ( Password ) { var Verifier = 0 , PasswordArray ; var PasswordDecoded = _JS2ANSI ( Password ) ; var len = PasswordDecoded . length + 1 , i , PasswordByte ; var Intermediate1 , Intermediate2 , Intermediate3 ; PasswordArray = new _raw _buf ( len ) ; PasswordArray [ 0 ] = PasswordDecoded . length ; for ( i = 1 ; i != len ; ++ i ) PasswordArray [ i ] = PasswordDecoded [ i - 1 ] ; for ( i = len - 1 ; i >= 0 ; -- i ) { PasswordByte = PasswordArray [ i ] ; Intermediate1 = ( Verifier & 16384 ) === 0 ? 0 : 1 ; Intermediate2 = Verifier << 1 & 32767 ; Intermediate3 = Intermediate1 | Intermediate2 ; Verifier = Intermediate3 ^ PasswordByte } return Verifier ^ 52811 } var crypto _CreateXorArray _Method1 = function ( ) { var PadArray = [ 187 , 255 , 255 , 186 , 255 , 255 , 185 , 128 , 0 , 190 , 15 , 0 , 191 , 15 , 0 ] ; var InitialCode = [ 57840 , 7439 , 52380 , 33984 , 4364 , 3600 , 61902 , 12606 , 6258 , 57657 , 54287 , 34041 , 10252 , 43370 , 20163 ] ; var XorMatrix = [ 44796 , 19929 , 39858 , 10053 , 20106 , 40212 , 10761 , 31585 , 63170 , 64933 , 60267 , 50935 , 40399 , 11199 , 17763 , 35526 , 1453 , 2906 , 5812 , 11624 , 23248 , 885 , 1770 , 3540 , 7080 , 14160 , 28320 , 56640 , 55369 , 41139 , 20807 , 41614 , 21821 , 43642 , 17621 , 28485 , 56970 , 44341 , 19019 , 38038 , 14605 , 29210 , 60195 , 50791 , 40175 , 10751 , 21502 , 43004 , 24537 , 18387 , 36774 , 3949 , 7898 , 15796 , 31592 , 63184 , 47201 , 24803 , 49606 , 37805 , 14203 , 28406 , 56812 , 17824 , 35648 , 1697 , 3394 , 6788 , 13576 , 27152 , 43601 , 17539 , 35078 , 557 , 1114 , 2228 , 4456 , 30388 , 60776 , 51953 , 34243 , 7079 , 14158 , 28316 , 14128 , 28256 , 56512 , 43425 , 17251 , 34502 , 7597 , 13105 , 26210 , 52420 , 35241 , 883 , 1766 , 3532 , 4129 , 8258 , 16516 , 33032 , 4657 , 9314 , 18628 ] ; var Ror = function ( Byte ) { return ( Byte / 2 | Byte * 128 ) & 255 } ; var XorRor = function ( byte1 , byte2 ) { return Ror ( byte1 ^ byte2 ) } ; var CreateXorKey _Method1 = function ( Password ) { var XorKey = InitialCode [ Password . length - 1 ] ; var CurrentElement = 104 ; for ( var i = Password . length - 1 ; i >= 0 ; -- i ) { var Char = Password [ i ] ; for ( var j = 0 ; j != 7 ; ++ j ) { if ( Char & 64 ) XorKey ^= XorMatrix [ CurrentElement ] ; Char *= 2 ; -- CurrentElement } } return XorKey } ; return function ( password ) { var Password = _JS2ANSI ( password ) ; var XorKey = CreateXorKey _Method1 ( Password ) ; var Index = Password . length ; var ObfuscationArray = new _raw _buf ( 16 ) ; for ( var i = 0 ; i != 16 ; ++ i ) ObfuscationArray [ i ] = 0 ; var Temp , PasswordLastChar , PadIndex ; if ( ( Index & 1 ) === 1 ) { Temp = XorKey >> 8 ; ObfuscationArray [ Index ] = XorRor ( PadArray [ 0 ] , Temp ) ; -- Index ; Temp = XorKey & 255 ; PasswordLastChar = Password [ Password . length - 1 ] ; ObfuscationArray [ Index ] = XorRor ( PasswordLastChar , Temp ) } while ( Index > 0 ) { -- Index ; Temp = XorKey >> 8 ; ObfuscationArray [ Index ] = XorRor ( Password [ Index ] , Temp ) ; -- Index ; Temp = XorKey & 255 ; ObfuscationArray [ Index ] = XorRor ( Password [ Index ] , Temp ) } Index = 15 ; PadIndex = 15 - Password . length ; while ( PadIndex > 0 ) { Temp = XorKey >> 8 ; ObfuscationArray [ Index ] = XorRor ( PadArray [ PadIndex ] , Temp ) ; -- Index ; -- PadIndex ; Temp = XorKey & 255 ; ObfuscationArray [ Index ] = XorRor ( Password [ Index ] , Temp ) ; -- Index ; -- PadIndex } return ObfuscationArray } } ( ) ; var crypto _DecryptData _Method1 = function ( password , Data , XorArrayIndex , XorArray , O ) { if ( ! O ) O = Data ; if ( ! XorArray ) XorArray = crypto _CreateXorArray _Method1 ( password ) ; var Index , Value ; for ( Index = 0 ; Index != Data . length ; ++ Index ) { Value = Data [ Index ] ; Value ^= XorArray [ XorArrayIndex ] ; Value = ( Value >> 5 | Value << 3 ) & 255 ; O [ Index ] = Value ; ++ XorArrayIndex } return [ O , XorArrayIndex , XorArray ] } ; var crypto _MakeXorDecryptor = function ( password ) { var XorArrayIndex = 0 , XorArray = crypto _CreateXorArray _Method1 ( password ) ; return function ( Data ) { var O = crypto _DecryptData _
case 6 : break ; case 7 : break ; case 8 : break ; case 9 : break ; case 10 : break ; case 11 : break ; case 13 : break ; case 14 : break ; case 15 : break } } ) } function parse _cc _xml ( data , opts ) { var d = [ ] ; if ( ! data ) return d ; var l = 0 , i = 1 ; ( data . match ( tagregex ) || [ ] ) . forEach ( function ( x ) { var y = parsexmltag ( x ) ; switch ( y [ 0 ] ) { case "<?xml" : break ; case "<calcChain" : case "<calcChain>" : case "</calcChain>" : break ; case "<c" : delete y [ 0 ] ; if ( y . i ) i = y . i ; else y . i = i ; d . push ( y ) ; break } } ) ; return d } function write _cc _xml ( data , opts ) { } function parse _BrtCalcChainItem$ ( data , length ) { var out = { } ; out . i = data . read _shift ( 4 ) ; var cell = { } ; cell . r = data . read _shift ( 4 ) ; cell . c = data . read _shift ( 4 ) ; out . r = encode _cell ( cell ) ; var flags = data . read _shift ( 1 ) ; if ( flags & 2 ) out . l = "1" ; if ( flags & 8 ) out . a = "1" ; return out } function parse _cc _bin ( data , opts ) { var out = [ ] ; var pass = false ; recordhopper ( data , function hopper _cc ( val , R , RT ) { switch ( R . n ) { case "BrtCalcChainItem$" : out . push ( val ) ; break ; case "BrtBeginCalcChain$" : break ; case "BrtEndCalcChain$" : break ; default : if ( ! pass || opts . WTF ) throw new Error ( "Unexpected record " + RT + " " + R . n ) } } ) ; return out } function write _cc _bin ( data , opts ) { } function parse _drawing ( data , rels ) { if ( ! data ) return "??" ; var id = ( data . match ( /<c:chart [^>]*r:id="([^"]*)"/ ) || [ "" , "" ] ) [ 1 ] ; return rels [ "!id" ] [ id ] . Target } function parse _comments ( zip , dirComments , sheets , sheetRels , opts ) { for ( var i = 0 ; i != dirComments . length ; ++ i ) { var canonicalpath = dirComments [ i ] ; var comments = parse _cmnt ( getzipdata ( zip , canonicalpath . replace ( /^\// , "" ) , true ) , canonicalpath , opts ) ; if ( ! comments || ! comments . length ) continue ; var sheetNames = keys ( sheets ) ; for ( var j = 0 ; j != sheetNames . length ; ++ j ) { var sheetName = sheetNames [ j ] ; var rels = sheetRels [ sheetName ] ; if ( rels ) { var rel = rels [ canonicalpath ] ; if ( rel ) insertCommentsIntoSheet ( sheetName , sheets [ sheetName ] , comments ) } } } } function insertCommentsIntoSheet ( sheetName , sheet , comments ) { comments . forEach ( function ( comment ) { var cell = sheet [ comment . ref ] ; if ( ! cell ) { cell = { } ; sheet [ comment . ref ] = cell ; var range = safe _decode _range ( sheet [ "!ref" ] || "BDWGO1000001:A1" ) ; var thisCell = decode _cell ( comment . ref ) ; if ( range . s . r > thisCell . r ) range . s . r = thisCell . r ; if ( range . e . r < thisCell . r ) range . e . r = thisCell . r ; if ( range . s . c > thisCell . c ) range . s . c = thisCell . c ; if ( range . e . c < thisCell . c ) range . e . c = thisCell . c ; var encoded = encode _range ( range ) ; if ( encoded !== sheet [ "!ref" ] ) sheet [ "!ref" ] = encoded } if ( ! cell . c ) cell . c = [ ] ; var o = { a : comment . author , t : comment . t , r : comment . r } ; if ( comment . h ) o . h = comment . h ; cell . c . push ( o ) } ) } function parse _comments _xml ( data , opts ) { if ( data . match ( /<(?:\w+:)?comments *\/>/ ) ) return [ ] ; var authors = [ ] ; var commentList = [ ] ; var authtag = data . match ( /<(?:\w+:)?authors>([^\u2603]*)<\/(?:\w+:)?authors>/ ) ; if ( authtag && authtag [ 1 ] ) authtag [ 1 ] . split ( /<\/\w*:?author>/ ) . forEach ( function ( x ) { if ( x === "" || x . trim ( ) === "" ) return ; var a = x . match ( /<(?:\w+:)?author[^>]*>(.*)/ ) ; if ( a ) authors . push ( a [ 1 ] ) } ) ; var cmnttag = data . match ( /<(?:\w+:)?commentList>([^\u2603]*)<\/(?:\w+:)?commentList>/ ) ; if ( cmnttag && cmnttag [ 1 ] ) cmnttag [ 1 ] . split ( /<\/\w*:?comment>/ ) . forEach ( function ( x , index ) { if ( x === "" || x . trim ( ) === "" ) return ; var cm = x . match ( /<(?:\w+:)?comment[^>]*>/ ) ; if ( ! cm ) return ; var y = parsexmltag ( cm [ 0 ] ) ; var comment = { author : y . authorId && authors [ y . authorId ] ? authors [ y . authorId ] : undefined , ref : y . ref , guid : y . guid } ; var cell = decode _cell ( y . ref ) ; if ( opts . sheetRows && opts . sheetRows <= cell . r ) return ; var textMatch = x . match ( /<(?:\w+:)?text>([^\u2603]*)<\/(?:\w+:)?text>/ ) ; if ( ! textMatch || ! textMatch [ 1 ] ) return ; var rt = parse _si ( textMatch [ 1 ] ) ; if ( ! rt ) return ; comment . r = rt . r ; comment . t = rt . t ; if ( opts . cellHTML ) comment . h = rt . h ; commentList . push ( comment ) } ) ; return commentList } function write _comments _xml ( data , opts ) { } function parse _BrtBeginComment ( data , length ) { var out = { } ; out . iauthor = data . read _shift ( 4 ) ; var rfx = parse _UncheckedRfX ( data , 16 ) ; out . rfx = rfx . s ; out . ref = encode _cell ( rfx . s ) ; data . l += 16 ; return out } var parse _BrtCommentAuthor = parse _XLWideString ; var parse _BrtCommentText = parse _RichStr ; function parse _comments _bin ( data , opts ) { var out = [ ] ; var authors = [ ] ; var c = { } ; var pass = false ; recordhopper ( data , function hopper _cmnt ( val , R , RT ) { switch ( R . n ) { case "BrtCommentAuthor" : authors . push ( val ) ; break ; case "BrtBeginComment" : c = val ; break ; case "BrtCommentText" : c . t = val . t ; c . h = val . h ; c . r = val . r ; break ; case "BrtEndComment" : c . author = authors [ c
445 : "PUSHBUTTON.PROPERTIES" , 446 : "SET.DIALOG.DEFAULT" , 447 : "FILTER" , 448 : "FILTER.SHOW.ALL" , 449 : "CLEAR.OUTLINE" , 450 : "FUNCTION.WIZARD" , 451 : "ADD.LIST.ITEM" , 452 : "SET.LIST.ITEM" , 453 : "REMOVE.LIST.ITEM" , 454 : "SELECT.LIST.ITEM" , 455 : "SET.CONTROL.VALUE" , 456 : "SAVE.COPY.AS" , 458 : "OPTIONS.LISTS.ADD" , 459 : "OPTIONS.LISTS.DELETE" , 460 : "SERIES.AXES" , 461 : "SERIES.X" , 462 : "SERIES.Y" , 463 : "ERRORBAR.X" , 464 : "ERRORBAR.Y" , 465 : "FORMAT.CHART" , 466 : "SERIES.ORDER" , 467 : "MAIL.LOGOFF" , 468 : "CLEAR.ROUTING.SLIP" , 469 : "APP.ACTIVATE.MICROSOFT" , 470 : "MAIL.EDIT.MAILER" , 471 : "ON.SHEET" , 472 : "STANDARD.WIDTH" , 473 : "SCENARIO.MERGE" , 474 : "SUMMARY.INFO" , 475 : "FIND.FILE" , 476 : "ACTIVE.CELL.FONT" , 477 : "ENABLE.TIPWIZARD" , 478 : "VBA.MAKE.ADDIN" , 480 : "INSERTDATATABLE" , 481 : "WORKGROUP.OPTIONS" , 482 : "MAIL.SEND.MAILER" , 485 : "AUTOCORRECT" , 489 : "POST.DOCUMENT" , 491 : "PICKLIST" , 493 : "VIEW.SHOW" , 494 : "VIEW.DEFINE" , 495 : "VIEW.DELETE" , 509 : "SHEET.BACKGROUND" , 510 : "INSERT.MAP.OBJECT" , 511 : "OPTIONS.MENONO" , 517 : "MSOCHECKS" , 518 : "NORMAL" , 519 : "LAYOUT" , 520 : "RM.PRINT.AREA" , 521 : "CLEAR.PRINT.AREA" , 522 : "ADD.PRINT.AREA" , 523 : "MOVE.BRK" , 545 : "HIDECURR.NOTE" , 546 : "HIDEALL.NOTES" , 547 : "DELETE.NOTE" , 548 : "TRAVERSE.NOTES" , 549 : "ACTIVATE.NOTES" , 620 : "PROTECT.REVISIONS" , 621 : "UNPROTECT.REVISIONS" , 647 : "OPTIONS.ME" , 653 : "WEB.PUBLISH" , 667 : "NEWWEBQUERY" , 673 : "PIVOT.TABLE.CHART" , 753 : "OPTIONS.SAVE" , 755 : "OPTIONS.SPELL" , 808 : "HIDEALL.INKANNOTS" } ; var Ftab = { 0 : "COUNT" , 1 : "IF" , 2 : "ISNA" , 3 : "ISERROR" , 4 : "SUM" , 5 : "AVERAGE" , 6 : "MIN" , 7 : "MAX" , 8 : "ROW" , 9 : "COLUMN" , 10 : "NA" , 11 : "NPV" , 12 : "STDEV" , 13 : "DOLLAR" , 14 : "FIXED" , 15 : "SIN" , 16 : "COS" , 17 : "TAN" , 18 : "ATAN" , 19 : "PI" , 20 : "SQRT" , 21 : "EXP" , 22 : "LN" , 23 : "LOG10" , 24 : "ABS" , 25 : "INT" , 26 : "SIGN" , 27 : "ROUND" , 28 : "LOOKUP" , 29 : "INDEX" , 30 : "REPT" , 31 : "MID" , 32 : "LEN" , 33 : "VALUE" , 34 : "TRUE" , 35 : "FALSE" , 36 : "AND" , 37 : "OR" , 38 : "NOT" , 39 : "MOD" , 40 : "DCOUNT" , 41 : "DSUM" , 42 : "DAVERAGE" , 43 : "DMIN" , 44 : "DMAX" , 45 : "DSTDEV" , 46 : "VAR" , 47 : "DVAR" , 48 : "TEXT" , 49 : "LINEST" , 50 : "TREND" , 51 : "LOGEST" , 52 : "GROWTH" , 53 : "GOTO" , 54 : "HALT" , 55 : "RETURN" , 56 : "PV" , 57 : "FV" , 58 : "NPER" , 59 : "PMT" , 60 : "RATE" , 61 : "MIRR" , 62 : "IRR" , 63 : "RAND" , 64 : "MATCH" , 65 : "DATE" , 66 : "TIME" , 67 : "DAY" , 68 : "MONTH" , 69 : "YEAR" , 70 : "WEEKDAY" , 71 : "HOUR" , 72 : "MINUTE" , 73 : "SECOND" , 74 : "NOW" , 75 : "AREAS" , 76 : "ROWS" , 77 : "COLUMNS" , 78 : "OFFSET" , 79 : "ABSREF" , 80 : "RELREF" , 81 : "ARGUMENT" , 82 : "SEARCH" , 83 : "TRANSPOSE" , 84 : "ERROR" , 85 : "STEP" , 86 : "TYPE" , 87 : "ECHO" , 88 : "SET.NAME" , 89 : "CALLER" , 90 : "DEREF" , 91 : "WINDOWS" , 92 : "SERIES" , 93 : "DOCUMENTS" , 94 : "ACTIVE.CELL" , 95 : "SELECTION" , 96 : "RESULT" , 97 : "ATAN2" , 98 : "ASIN" , 99 : "ACOS" , 100 : "CHOOSE" , 101 : "HLOOKUP" , 102 : "VLOOKUP" , 103 : "LINKS" , 104 : "INPUT" , 105 : "ISREF" , 106 : "GET.FORMULA" , 107 : "GET.NAME" , 108 : "SET.VALUE" , 109 : "LOG" , 110 : "EXEC" , 111 : "CHAR" , 112 : "LOWER" , 113 : "UPPER" , 114 : "PROPER" , 115 : "LEFT" , 116 : "RIGHT" , 117 : "EXACT" , 118 : "TRIM" , 119 : "REPLACE" , 120 : "SUBSTITUTE" , 121 : "CODE" , 122 : "NAMES" , 123 : "DIRECTORY" , 124 : "FIND" , 125 : "CELL" , 126 : "ISERR" , 127 : "ISTEXT" , 128 : "ISNUMBER" , 129 : "ISBLANK" , 130 : "T" , 131 : "N" , 132 : "FOPEN" , 133 : "FCLOSE" , 134 : "FSIZE" , 135 : "FREADLN" , 136 : "FREAD" , 137 : "FWRITELN" , 138 : "FWRITE" , 139 : "FPOS" , 140 : "DATEVALUE" , 141 : "TIMEVALUE" , 142 : "SLN" , 143 : "SYD" , 144 : "DDB" , 145 : "GET.DEF" , 146 : "REFTEXT" , 147 : "TEXTREF" , 148 : "INDIRECT" , 149 : "REGISTER" , 150 : "CALL" , 151 : "ADD.BAR" , 152 : "ADD.MENU" , 153 : "ADD.COMMAND" , 154 : "ENABLE.COMMAND" , 155 : "CHECK.COMMAND" , 156 : "RENAME.COMMAND" , 157 : "SHOW.BAR" , 158 : "DELETE.MENU" , 159 : "DELETE.COMMAND" , 160 : "GET.CHART.ITEM" , 161 : "DIALOG.BOX" , 162 : "CLEAN" , 163 : "MDETERM" , 164 : "MINVERSE" , 165 : "MMULT" , 166 : "FILES" , 167 : "IPMT" , 168 : "PPMT" , 169 : "COUNTA" , 170 : "CANCEL.KEY" , 171 : "FOR" , 172 : "WHILE" , 173 : "BREAK" , 174 : "NEXT" , 175 : "INITIATE" , 176 : "REQUEST" , 177 : "POKE" , 178 : "EXECUTE" , 179 : "TERMINATE" , 180 : "RESTART" , 181 : "HELP" , 182 : "GET.BAR" , 183 : "PRODUCT" , 184 : "FACT" , 185 : "GET.CELL" , 186 : "GET.WORKSPACE" , 187 : "GET.WINDOW" , 188 : "GET.DOCUMENT" , 189 : "DPRODUCT" , 190 : "ISNONTEXT" , 191 : "GET.NOTE" , 192 : "NOTE" , 193 : "STDEVP" , 194 : "VARP" , 195 : "DSTDEVP" , 196 : "DVARP" , 197 : "TRUNC" , 198 : "ISLOGICAL" , 199 : "DCOUNTA" , 200 : "DELETE.BAR" , 201 : "UNREGISTER" , 204 : "USDOLLAR" , 205 : "FINDB" , 206 : "SEARCHB" , 207 : "REPLACEB" , 208 : "LEFTB" , 209 : "RIGHTB" , 210 : "MIDB" , 211 : "LENB" , 212 : "ROUNDUP" , 213 : "ROUNDDOWN" , 214 : "ASC" , 215 : "DBCS" , 216 : "RANK" , 219 : "ADDRESS" , 220 : "DAYS360" , 221 : "TODAY" , 222 : "VDB" , 223 : "ELSE" , 224 : "ELSE.IF" , 225 : "END.IF" , 226 : "FOR.CELL" , 227 : "MEDIAN" , 228 : " SUMPR
r : row . r , c : C } , supbooks , opts ) ; s [ encode _col ( C ) + rr ] . F = encode _range ( val [ 0 ] ) ; break ; case "BrtShrFmla" : if ( ! opts . cellFormula ) break ; shared _formulae [ encode _cell ( val [ 0 ] . s ) ] = val [ 1 ] ; s [ encode _col ( C ) + rr ] . f = stringify _formula ( val [ 1 ] , refguess , { r : row . r , c : C } , supbooks , opts ) ; break ; case "BrtColInfo" : { if ( ! opts . cellStyles ) break ; while ( val . e >= val . s ) { colinfo [ val . e -- ] = { width : val . w / 256 } ; if ( ! seencol ) { seencol = true ; find _mdw _colw ( val . w / 256 ) } process _col ( colinfo [ val . e + 1 ] ) } } break ; case "BrtBeginSheet" : break ; case "BrtWsProp" : break ; case "BrtSheetCalcProp" : break ; case "BrtBeginWsViews" : break ; case "BrtBeginWsView" : break ; case "BrtPane" : break ; case "BrtSel" : break ; case "BrtEndWsView" : break ; case "BrtEndWsViews" : break ; case "BrtACBegin" : break ; case "BrtRwDescent" : break ; case "BrtACEnd" : break ; case "BrtWsFmtInfoEx14" : break ; case "BrtWsFmtInfo" : break ; case "BrtBeginColInfos" : break ; case "BrtEndColInfos" : break ; case "BrtBeginSheetData" : break ; case "BrtEndSheetData" : break ; case "BrtSheetProtection" : break ; case "BrtPrintOptions" : break ; case "BrtMargins" : break ; case "BrtPageSetup" : break ; case "BrtFRTBegin" : pass = true ; break ; case "BrtFRTEnd" : pass = false ; break ; case "BrtEndSheet" : break ; case "BrtDrawing" : break ; case "BrtLegacyDrawing" : break ; case "BrtLegacyDrawingHF" : break ; case "BrtPhoneticInfo" : break ; case "BrtBeginHeaderFooter" : break ; case "BrtEndHeaderFooter" : break ; case "BrtBrk" : break ; case "BrtBeginRwBrk" : break ; case "BrtEndRwBrk" : break ; case "BrtBeginColBrk" : break ; case "BrtEndColBrk" : break ; case "BrtBeginUserShViews" : break ; case "BrtBeginUserShView" : break ; case "BrtEndUserShView" : break ; case "BrtEndUserShViews" : break ; case "BrtBkHim" : break ; case "BrtBeginOleObjects" : break ; case "BrtOleObject" : break ; case "BrtEndOleObjects" : break ; case "BrtBeginListParts" : break ; case "BrtListPart" : break ; case "BrtEndListParts" : break ; case "BrtBeginSortState" : break ; case "BrtBeginSortCond" : break ; case "BrtEndSortCond" : break ; case "BrtEndSortState" : break ; case "BrtBeginConditionalFormatting" : break ; case "BrtEndConditionalFormatting" : break ; case "BrtBeginCFRule" : break ; case "BrtEndCFRule" : break ; case "BrtBeginDVals" : break ; case "BrtDVal" : break ; case "BrtEndDVals" : break ; case "BrtRangeProtection" : break ; case "BrtBeginDCon" : break ; case "BrtEndDCon" : break ; case "BrtBeginDRefs" : break ; case "BrtDRef" : break ; case "BrtEndDRefs" : break ; case "BrtBeginActiveXControls" : break ; case "BrtActiveX" : break ; case "BrtEndActiveXControls" : break ; case "BrtBeginAFilter" : break ; case "BrtEndAFilter" : break ; case "BrtBeginFilterColumn" : break ; case "BrtBeginFilters" : break ; case "BrtFilter" : break ; case "BrtEndFilters" : break ; case "BrtEndFilterColumn" : break ; case "BrtDynamicFilter" : break ; case "BrtTop10Filter" : break ; case "BrtBeginCustomFilters" : break ; case "BrtCustomFilter" : break ; case "BrtEndCustomFilters" : break ; case "BrtBeginSmartTags" : break ; case "BrtBeginCellSmartTags" : break ; case "BrtBeginCellSmartTag" : break ; case "BrtCellSmartTagProperty" : break ; case "BrtEndCellSmartTag" : break ; case "BrtEndCellSmartTags" : break ; case "BrtEndSmartTags" : break ; case "BrtBeginCellWatches" : break ; case "BrtCellWatch" : break ; case "BrtEndCellWatches" : break ; case "BrtTable" : break ; case "BrtBeginCellIgnoreECs" : break ; case "BrtCellIgnoreEC" : break ; case "BrtEndCellIgnoreECs" : break ; default : if ( ! pass || opts . WTF ) throw new Error ( "Unexpected record " + Record . n ) } } , opts ) ; delete opts . supbooks ; delete opts [ "!row" ] ; if ( ! s [ "!ref" ] && ( refguess . s . r < 2e6 || ref && ( ref . e . r > 0 || ref . e . c > 0 || ref . s . r > 0 || ref . s . c > 0 ) ) ) s [ "!ref" ] = encode _range ( ref || refguess ) ; if ( opts . sheetRows && s [ "!ref" ] ) { var tmpref = safe _decode _range ( s [ "!ref" ] ) ; if ( opts . sheetRows < + tmpref . e . r ) { tmpref . e . r = opts . sheetRows - 1 ; if ( tmpref . e . r > refguess . e . r ) tmpref . e . r = refguess . e . r ; if ( tmpref . e . r < tmpref . s . r ) tmpref . s . r = tmpref . e . r ; if ( tmpref . e . c > refguess . e . c ) tmpref . e . c = refguess . e . c ; if ( tmpref . e . c < tmpref . s . c ) tmpref . s . c = tmpref . e . c ; s [ "!fullref" ] = s [ "!ref" ] ; s [ "!ref" ] = encode _range ( tmpref ) } } if ( mergecells . length > 0 ) s [ "!merges" ] = mergecells ; if ( colinfo . length > 0 ) s [ "!cols" ] = colinfo ; if ( rowinfo . length > 0 ) s [ "!rows" ] = rowinfo ; return s } function write _ws _bin _cell ( ba , cell , R , C , opts ) { if ( cell . v === undefined ) return "" ; var vv = "" ; var olddate = null ; switch ( cell . t ) { case "b" : vv = cell . v ? "1" : "0" ; break ; case "d" : cell . z = cell . z || SSF . _table [ 14 ] ; olddate = cell . v ; cell . v = datenum ( cell . v ) ; cell . t = "n" ; break ; case "n" : case "e" : vv = "" + cell . v ; break ; default : vv = cell . v ;
break ; case "Selected" : break ; case "ProtectObjects" : break ; case "EnableSelection" : break ; case "ProtectScenarios" : break ; case "ValidPrinterInfo" : break ; case "HorizontalResolution" : break ; case "VerticalResolution" : break ; case "NumberofCopies" : break ; case "ActiveRow" : break ; case "ActiveCol" : break ; case "ActivePane" : break ; case "TopRowVisible" : break ; case "TopRowBottomPane" : break ; case "LeftColumnVisible" : break ; case "LeftColumnRightPane" : break ; case "FitToPage" : break ; case "RangeSelection" : break ; case "PaperSizeIndex" : break ; case "PageLayoutZoom" : break ; case "PageBreakZoom" : break ; case "FilterOn" : break ; case "DoNotDisplayGridlines" : break ; case "SplitHorizontal" : break ; case "SplitVertical" : break ; case "FreezePanes" : break ; case "FrozenNoSplit" : break ; case "FitWidth" : break ; case "FitHeight" : break ; case "CommentsLayout" : break ; case "Zoom" : break ; case "LeftToRight" : break ; case "Gridlines" : break ; case "AllowSort" : break ; case "AllowFilter" : break ; case "AllowInsertRows" : break ; case "AllowDeleteRows" : break ; case "AllowInsertCols" : break ; case "AllowDeleteCols" : break ; case "AllowInsertHyperlinks" : break ; case "AllowFormatCells" : break ; case "AllowSizeCols" : break ; case "AllowSizeRows" : break ; case "NoSummaryRowsBelowDetail" : break ; case "TabColorIndex" : break ; case "DoNotDisplayHeadings" : break ; case "ShowPageLayoutZoom" : break ; case "NoSummaryColumnsRightDetail" : break ; case "BlackAndWhite" : break ; case "DoNotDisplayZeros" : break ; case "DisplayPageBreak" : break ; case "RowColHeadings" : break ; case "DoNotDisplayOutline" : break ; case "NoOrientation" : break ; case "AllowUsePivotTables" : break ; case "ZeroHeight" : break ; case "ViewableRange" : break ; case "Selection" : break ; case "ProtectContents" : break ; default : seen = false } break ; case "PivotTable" : case "PivotCache" : switch ( Rn [ 3 ] ) { case "ImmediateItemsOnDrop" : break ; case "ShowPageMultipleItemLabel" : break ; case "CompactRowIndent" : break ; case "Location" : break ; case "PivotField" : break ; case "Orientation" : break ; case "LayoutForm" : break ; case "LayoutSubtotalLocation" : break ; case "LayoutCompactRow" : break ; case "Position" : break ; case "PivotItem" : break ; case "DataType" : break ; case "DataField" : break ; case "SourceName" : break ; case "ParentField" : break ; case "PTLineItems" : break ; case "PTLineItem" : break ; case "CountOfSameItems" : break ; case "Item" : break ; case "ItemType" : break ; case "PTSource" : break ; case "CacheIndex" : break ; case "ConsolidationReference" : break ; case "FileName" : break ; case "Reference" : break ; case "NoColumnGrand" : break ; case "NoRowGrand" : break ; case "BlankLineAfterItems" : break ; case "Hidden" : break ; case "Subtotal" : break ; case "BaseField" : break ; case "MapChildItems" : break ; case "Function" : break ; case "RefreshOnFileOpen" : break ; case "PrintSetTitles" : break ; case "MergeLabels" : break ; case "DefaultVersion" : break ; case "RefreshName" : break ; case "RefreshDate" : break ; case "RefreshDateCopy" : break ; case "VersionLastRefresh" : break ; case "VersionLastUpdate" : break ; case "VersionUpdateableMin" : break ; case "VersionRefreshableMin" : break ; case "Calculation" : break ; default : seen = false } break ; case "PageBreaks" : switch ( Rn [ 3 ] ) { case "ColBreaks" : break ; case "ColBreak" : break ; case "RowBreaks" : break ; case "RowBreak" : break ; case "ColStart" : break ; case "ColEnd" : break ; case "RowEnd" : break ; default : seen = false } break ; case "AutoFilter" : switch ( Rn [ 3 ] ) { case "AutoFilterColumn" : break ; case "AutoFilterCondition" : break ; case "AutoFilterAnd" : break ; case "AutoFilterOr" : break ; default : seen = false } break ; case "QueryTable" : switch ( Rn [ 3 ] ) { case "Id" : break ; case "AutoFormatFont" : break ; case "AutoFormatPattern" : break ; case "QuerySource" : break ; case "QueryType" : break ; case "EnableRedirections" : break ; case "RefreshedInXl9" : break ; case "URLString" : break ; case "HTMLTables" : break ; case "Connection" : break ; case "CommandText" : break ; case "RefreshInfo" : break ; case "NoTitles" : break ; case "NextId" : break ; case "ColumnInfo" : break ; case "OverwriteCells" : break ; case "DoNotPromptForFile" : break ; case "TextWizardSettings" : break ; case "Source" : break ; case "Number" : break ; case "Decimal" : break ; case "ThousandSeparator" : break ; case "TrailingMinusNumbers" : break ; case "FormatSettings" : break ; case "FieldType" : break ; case "Delimiters" : break ; case "Tab" : break ; case "Comma" : break ; case "AutoFormatName" : break ; case "VersionLastEdit" : break ; case "VersionLastRefresh" : break ; default : seen = false } break ; case "Sorting" : case "ConditionalFormatting" : case "DataValidation" : switch ( Rn [ 3 ] ) { case "Range"
f : parsenoop } , 195 : { n : "BrtBeginPCDHierarchies" , f : parsenoop } , 196 : { n : "BrtEndPCDHierarchies" , f : parsenoop } , 197 : { n : "BrtBeginPCDHierarchy" , f : parsenoop } , 198 : { n : "BrtEndPCDHierarchy" , f : parsenoop } , 199 : { n : "BrtBeginPCDHFieldsUsage" , f : parsenoop } , 200 : { n : "BrtEndPCDHFieldsUsage" , f : parsenoop } , 201 : { n : "BrtBeginExtConnection" , f : parsenoop } , 202 : { n : "BrtEndExtConnection" , f : parsenoop } , 203 : { n : "BrtBeginECDbProps" , f : parsenoop } , 204 : { n : "BrtEndECDbProps" , f : parsenoop } , 205 : { n : "BrtBeginECOlapProps" , f : parsenoop } , 206 : { n : "BrtEndECOlapProps" , f : parsenoop } , 207 : { n : "BrtBeginPCDSConsol" , f : parsenoop } , 208 : { n : "BrtEndPCDSConsol" , f : parsenoop } , 209 : { n : "BrtBeginPCDSCPages" , f : parsenoop } , 210 : { n : "BrtEndPCDSCPages" , f : parsenoop } , 211 : { n : "BrtBeginPCDSCPage" , f : parsenoop } , 212 : { n : "BrtEndPCDSCPage" , f : parsenoop } , 213 : { n : "BrtBeginPCDSCPItem" , f : parsenoop } , 214 : { n : "BrtEndPCDSCPItem" , f : parsenoop } , 215 : { n : "BrtBeginPCDSCSets" , f : parsenoop } , 216 : { n : "BrtEndPCDSCSets" , f : parsenoop } , 217 : { n : "BrtBeginPCDSCSet" , f : parsenoop } , 218 : { n : "BrtEndPCDSCSet" , f : parsenoop } , 219 : { n : "BrtBeginPCDFGroup" , f : parsenoop } , 220 : { n : "BrtEndPCDFGroup" , f : parsenoop } , 221 : { n : "BrtBeginPCDFGItems" , f : parsenoop } , 222 : { n : "BrtEndPCDFGItems" , f : parsenoop } , 223 : { n : "BrtBeginPCDFGRange" , f : parsenoop } , 224 : { n : "BrtEndPCDFGRange" , f : parsenoop } , 225 : { n : "BrtBeginPCDFGDiscrete" , f : parsenoop } , 226 : { n : "BrtEndPCDFGDiscrete" , f : parsenoop } , 227 : { n : "BrtBeginPCDSDTupleCache" , f : parsenoop } , 228 : { n : "BrtEndPCDSDTupleCache" , f : parsenoop } , 229 : { n : "BrtBeginPCDSDTCEntries" , f : parsenoop } , 230 : { n : "BrtEndPCDSDTCEntries" , f : parsenoop } , 231 : { n : "BrtBeginPCDSDTCEMembers" , f : parsenoop } , 232 : { n : "BrtEndPCDSDTCEMembers" , f : parsenoop } , 233 : { n : "BrtBeginPCDSDTCEMember" , f : parsenoop } , 234 : { n : "BrtEndPCDSDTCEMember" , f : parsenoop } , 235 : { n : "BrtBeginPCDSDTCQueries" , f : parsenoop } , 236 : { n : "BrtEndPCDSDTCQueries" , f : parsenoop } , 237 : { n : "BrtBeginPCDSDTCQuery" , f : parsenoop } , 238 : { n : "BrtEndPCDSDTCQuery" , f : parsenoop } , 239 : { n : "BrtBeginPCDSDTCSets" , f : parsenoop } , 240 : { n : "BrtEndPCDSDTCSets" , f : parsenoop } , 241 : { n : "BrtBeginPCDSDTCSet" , f : parsenoop } , 242 : { n : "BrtEndPCDSDTCSet" , f : parsenoop } , 243 : { n : "BrtBeginPCDCalcItems" , f : parsenoop } , 244 : { n : "BrtEndPCDCalcItems" , f : parsenoop } , 245 : { n : "BrtBeginPCDCalcItem" , f : parsenoop } , 246 : { n : "BrtEndPCDCalcItem" , f : parsenoop } , 247 : { n : "BrtBeginPRule" , f : parsenoop } , 248 : { n : "BrtEndPRule" , f : parsenoop } , 249 : { n : "BrtBeginPRFilters" , f : parsenoop } , 250 : { n : "BrtEndPRFilters" , f : parsenoop } , 251 : { n : "BrtBeginPRFilter" , f : parsenoop } , 252 : { n : "BrtEndPRFilter" , f : parsenoop } , 253 : { n : "BrtBeginPNames" , f : parsenoop } , 254 : { n : "BrtEndPNames" , f : parsenoop } , 255 : { n : "BrtBeginPName" , f : parsenoop } , 256 : { n : "BrtEndPName" , f : parsenoop } , 257 : { n : "BrtBeginPNPairs" , f : parsenoop } , 258 : { n : "BrtEndPNPairs" , f : parsenoop } , 259 : { n : "BrtBeginPNPair" , f : parsenoop } , 260 : { n : "BrtEndPNPair" , f : parsenoop } , 261 : { n : "BrtBeginECWebProps" , f : parsenoop } , 262 : { n : "BrtEndECWebProps" , f : parsenoop } , 263 : { n : "BrtBeginEcWpTables" , f : parsenoop } , 264 : { n : "BrtEndECWPTables" , f : parsenoop } , 265 : { n : "BrtBeginECParams" , f : parsenoop } , 266 : { n : "BrtEndECParams" , f : parsenoop } , 267 : { n : "BrtBeginECParam" , f : parsenoop } , 268 : { n : "BrtEndECParam" , f : parsenoop } , 269 : { n : "BrtBeginPCDKPIs" , f : parsenoop } , 270 : { n : "BrtEndPCDKPIs" , f : parsenoop } , 271 : { n : "BrtBeginPCDKPI" , f : parsenoop } , 272 : { n : "BrtEndPCDKPI" , f : parsenoop } , 273 : { n : "BrtBeginDims" , f : parsenoop } , 274 : { n : "BrtEndDims" , f : parsenoop } , 275 : { n : "BrtBeginDim" , f : parsenoop } , 276 : { n : "BrtEndDim" , f : parsenoop } , 277 : { n : "BrtIndexPartEnd" , f : parsenoop } , 278 : { n : "BrtBeginStyleSheet" , f : parsenoop } , 279 : { n : "BrtEndStyleSheet" , f : parsenoop } , 280 : { n : "BrtBeginSXView" , f : parsenoop } , 281 : { n : "BrtEndSXVI" , f : parsenoop } , 282 : { n : "BrtBeginSXVI" , f : parsenoop } , 283 : { n : "BrtBeginSXVIs" , f : parsenoop } , 284 : { n : "BrtEndSXVIs" , f : parsenoop } , 285 : { n : "BrtBeginSXVD" , f : parsenoop } , 286 : { n : "BrtEndSXVD" , f : parsenoop } , 287 : { n : "BrtBeginSXVDs" , f : parsenoop } , 288 : { n : "BrtEndSXVDs" , f : parsenoop } , 289 : { n : "BrtBeginSXPI" , f : parsenoop } , 290 : { n : "BrtEndSXPI" , f : parsenoop } , 291 : { n : "BrtBeginSXPIs" , f : parsenoop } , 292 : { n : "BrtEndSXPIs" , f : parsenoop } , 293 : { n : "BrtBeginSXDI" , f : parsenoop } , 294 : { n : "BrtEndSXDI" , f : parsenoop } , 295 : { n : "BrtBeginSXDIs" , f : parsenoop } , 296 : { n : "BrtEndSXDIs" , f : parsenoop } , 297 : { n : "BrtBeginSXLI" , f : parsenoop } , 298 : { n : "BrtEndSXLI" , f : parsenoop } , 299 : { n : "BrtBeginSXLIRws" , f : parsenoop } , 300 : { n :
n : "SXPair" , f : parse _SXPair } , 249 : { n : "SxFmla" , f : parse _SxFmla } , 251 : { n : "SxFormat" , f : parse _SxFormat } , 252 : { n : "SST" , f : parse _SST } , 253 : { n : "LabelSst" , f : parse _LabelSst } , 255 : { n : "ExtSST" , f : parse _ExtSST } , 256 : { n : "SXVDEx" , f : parse _SXVDEx } , 259 : { n : "SXFormula" , f : parse _SXFormula } , 290 : { n : "SXDBEx" , f : parse _SXDBEx } , 311 : { n : "RRDInsDel" , f : parse _RRDInsDel } , 312 : { n : "RRDHead" , f : parse _RRDHead } , 315 : { n : "RRDChgCell" , f : parse _RRDChgCell } , 317 : { n : "RRTabId" , f : parse _RRTabId } , 318 : { n : "RRDRenSheet" , f : parse _RRDRenSheet } , 319 : { n : "RRSort" , f : parse _RRSort } , 320 : { n : "RRDMove" , f : parse _RRDMove } , 330 : { n : "RRFormat" , f : parse _RRFormat } , 331 : { n : "RRAutoFmt" , f : parse _RRAutoFmt } , 333 : { n : "RRInsertSh" , f : parse _RRInsertSh } , 334 : { n : "RRDMoveBegin" , f : parse _RRDMoveBegin } , 335 : { n : "RRDMoveEnd" , f : parse _RRDMoveEnd } , 336 : { n : "RRDInsDelBegin" , f : parse _RRDInsDelBegin } , 337 : { n : "RRDInsDelEnd" , f : parse _RRDInsDelEnd } , 338 : { n : "RRDConflict" , f : parse _RRDConflict } , 339 : { n : "RRDDefName" , f : parse _RRDDefName } , 340 : { n : "RRDRstEtxp" , f : parse _RRDRstEtxp } , 351 : { n : "LRng" , f : parse _LRng } , 352 : { n : "UsesELFs" , f : parse _UsesELFs } , 353 : { n : "DSF" , f : parse _DSF } , 401 : { n : "CUsr" , f : parse _CUsr } , 402 : { n : "CbUsr" , f : parse _CbUsr } , 403 : { n : "UsrInfo" , f : parse _UsrInfo } , 404 : { n : "UsrExcl" , f : parse _UsrExcl } , 405 : { n : "FileLock" , f : parse _FileLock } , 406 : { n : "RRDInfo" , f : parse _RRDInfo } , 407 : { n : "BCUsrs" , f : parse _BCUsrs } , 408 : { n : "UsrChk" , f : parse _UsrChk } , 425 : { n : "UserBView" , f : parse _UserBView } , 426 : { n : "UserSViewBegin" , f : parse _UserSViewBegin } , 427 : { n : "UserSViewEnd" , f : parse _UserSViewEnd } , 428 : { n : "RRDUserView" , f : parse _RRDUserView } , 429 : { n : "Qsi" , f : parse _Qsi } , 430 : { n : "SupBook" , f : parse _SupBook } , 431 : { n : "Prot4Rev" , f : parse _Prot4Rev } , 432 : { n : "CondFmt" , f : parse _CondFmt } , 433 : { n : "CF" , f : parse _CF } , 434 : { n : "DVal" , f : parse _DVal } , 437 : { n : "DConBin" , f : parse _DConBin } , 438 : { n : "TxO" , f : parse _TxO } , 439 : { n : "RefreshAll" , f : parse _RefreshAll } , 440 : { n : "HLink" , f : parse _HLink } , 441 : { n : "Lel" , f : parse _Lel } , 442 : { n : "CodeName" , f : parse _XLSCodeName } , 443 : { n : "SXFDBType" , f : parse _SXFDBType } , 444 : { n : "Prot4RevPass" , f : parse _Prot4RevPass } , 445 : { n : "ObNoMacros" , f : parse _ObNoMacros } , 446 : { n : "Dv" , f : parse _Dv } , 448 : { n : "Excel9File" , f : parse _Excel9File } , 449 : { n : "RecalcId" , f : parse _RecalcId , r : 2 } , 450 : { n : "EntExU2" , f : parse _EntExU2 } , 512 : { n : "Dimensions" , f : parse _Dimensions } , 513 : { n : "Blank" , f : parse _Blank } , 515 : { n : "Number" , f : parse _Number } , 516 : { n : "Label" , f : parse _Label } , 517 : { n : "BoolErr" , f : parse _BoolErr } , 518 : { n : "Formula" , f : parse _Formula } , 519 : { n : "String" , f : parse _String } , 520 : { n : "Row" , f : parse _Row } , 523 : { n : "Index" , f : parse _Index } , 545 : { n : "Array" , f : parse _Array } , 549 : { n : "DefaultRowHeight" , f : parse _DefaultRowHeight } , 566 : { n : "Table" , f : parse _Table } , 574 : { n : "Window2" , f : parse _Window2 } , 638 : { n : "RK" , f : parse _RK } , 659 : { n : "Style" , f : parse _Style } , 1030 : { n : "Formula" , f : parse _Formula } , 1048 : { n : "BigName" , f : parse _BigName } , 1054 : { n : "Format" , f : parse _Format } , 1084 : { n : "ContinueBigName" , f : parse _ContinueBigName } , 1212 : { n : "ShrFmla" , f : parse _ShrFmla } , 2048 : { n : "HLinkTooltip" , f : parse _HLinkTooltip } , 2049 : { n : "WebPub" , f : parse _WebPub } , 2050 : { n : "QsiSXTag" , f : parse _QsiSXTag } , 2051 : { n : "DBQueryExt" , f : parse _DBQueryExt } , 2052 : { n : "ExtString" , f : parse _ExtString } , 2053 : { n : "TxtQry" , f : parse _TxtQry } , 2054 : { n : "Qsir" , f : parse _Qsir } , 2055 : { n : "Qsif" , f : parse _Qsif } , 2056 : { n : "RRDTQSIF" , f : parse _RRDTQSIF } , 2057 : { n : "BOF" , f : parse _BOF } , 2058 : { n : "OleDbConn" , f : parse _OleDbConn } , 2059 : { n : "WOpt" , f : parse _WOpt } , 2060 : { n : "SXViewEx" , f : parse _SXViewEx } , 2061 : { n : "SXTH" , f : parse _SXTH } , 2062 : { n : "SXPIEx" , f : parse _SXPIEx } , 2063 : { n : "SXVDTEx" , f : parse _SXVDTEx } , 2064 : { n : "SXViewEx9" , f : parse _SXViewEx9 } , 2066 : { n : "ContinueFrt" , f : parse _ContinueFrt } , 2067 : { n : "RealTimeData" , f : parse _RealTimeData } , 2128 : { n : "ChartFrtInfo" , f : parse _ChartFrtInfo } , 2129 : { n : "FrtWrapper" , f : parse _FrtWrapper } , 2130 : { n : "StartBlock" , f : parse _StartBlock } , 2131 : { n : "EndBlock" , f : parse _EndBlock } , 2132 : { n : "StartObject" , f : parse _StartObject } , 2133 : { n : "EndObject" , f : parse _EndObject } , 2134 : { n : "CatLab" , f : parse _CatLab } , 2135 : { n : "YMult" , f : parse _YMult } , 2136 : { n : "SXViewLink" , f : parse _SXViewLink } , 2137 : { n : "PivotChartBits" , f : parse _PivotChartBits } , 2138 : { n : "FrtFontList" , f : parse _FrtFontList } , 2146 : { n : "SheetExt" , f : parse _SheetExt } , 2147 : { n : "BookExt" , f : parse _BookExt , r : 12 } , 2148 : { n : "SXAddl" , f : parse _SXAddl } , 2149 : { n : "CrErr" , f : parse _CrErr } , 2150 : { n : "HFPicture" , f : parse _HFPicture } ,
if ( dir . extprops . length !== 0 ) { propdata = getzipstr ( zip , dir . extprops [ 0 ] . replace ( /^\// , "" ) , true ) ; if ( propdata ) parse _ext _props ( propdata , props ) } } var custprops = { } ; if ( ! opts . bookSheets || opts . bookProps ) { if ( dir . custprops . length !== 0 ) { propdata = getzipstr ( zip , dir . custprops [ 0 ] . replace ( /^\// , "" ) , true ) ; if ( propdata ) custprops = parse _cust _props ( propdata , opts ) } } var out = { } ; if ( opts . bookSheets || opts . bookProps ) { if ( wb . Sheets ) sheets = wb . Sheets . map ( function pluck ( x ) { return x . name } ) ; else if ( props . Worksheets && props . SheetNames . length > 0 ) sheets = props . SheetNames ; if ( opts . bookProps ) { out . Props = props ; out . Custprops = custprops } if ( opts . bookSheets && typeof sheets !== "undefined" ) out . SheetNames = sheets ; if ( opts . bookSheets ? out . SheetNames : opts . bookProps ) return out } sheets = { } ; var deps = { } ; if ( opts . bookDeps && dir . calcchain ) deps = parse _cc ( getzipdata ( zip , dir . calcchain . replace ( /^\// , "" ) ) , dir . calcchain , opts ) ; var i = 0 ; var sheetRels = { } ; var path , relsPath ; if ( ! props . Worksheets ) { var wbsheets = wb . Sheets ; props . Worksheets = wbsheets . length ; props . SheetNames = [ ] ; for ( var j = 0 ; j != wbsheets . length ; ++ j ) { props . SheetNames [ j ] = wbsheets [ j ] . name } } var wbext = xlsb ? "bin" : "xml" ; var wbrelsfile = "xl/_rels/workbook." + wbext + ".rels" ; var wbrels = parse _rels ( getzipstr ( zip , wbrelsfile , true ) , wbrelsfile ) ; if ( wbrels ) wbrels = safe _parse _wbrels ( wbrels , wb . Sheets ) ; var nmode = getzipdata ( zip , "xl/worksheets/sheet.xml" , true ) ? 1 : 0 ; for ( i = 0 ; i != props . Worksheets ; ++ i ) { var stype = "sheet" ; if ( wbrels && wbrels [ i ] ) { path = "xl/" + wbrels [ i ] [ 1 ] . replace ( /[\/]?xl\// , "" ) ; stype = wbrels [ i ] [ 2 ] } else { path = "xl/worksheets/sheet" + ( i + 1 - nmode ) + "." + wbext ; path = path . replace ( /sheet0\./ , "sheet." ) } relsPath = path . replace ( /^(.*)(\/)([^\/]*)$/ , "$1/_rels/$3.rels" ) ; safe _parse _sheet ( zip , path , relsPath , props . SheetNames [ i ] , sheetRels , sheets , stype , opts , wb , themes , styles ) } if ( dir . comments ) parse _comments ( zip , dir . comments , sheets , sheetRels , opts ) ; out = { Directory : dir , Workbook : wb , Props : props , Custprops : custprops , Deps : deps , Sheets : sheets , SheetNames : props . SheetNames , Strings : strs , Styles : styles , Themes : themes , SSF : SSF . get _table ( ) } ; if ( opts . bookFiles ) { out . keys = entries ; out . files = zip . files } if ( opts . bookVBA ) { if ( dir . vba . length > 0 ) out . vbaraw = getzipdata ( zip , dir . vba [ 0 ] . replace ( /^\// , "" ) , true ) ; else if ( dir . defaults && dir . defaults . bin === "application/vnd.ms-office.vbaProject" ) out . vbaraw = getzipdata ( zip , "xl/vbaProject.bin" , true ) } return out } function add _rels ( rels , rId , f , type , relobj ) { if ( ! relobj ) relobj = { } ; if ( ! rels [ "!id" ] ) rels [ "!id" ] = { } ; relobj . Id = "rId" + rId ; relobj . Type = type ; relobj . Target = f ; if ( rels [ "!id" ] [ relobj . Id ] ) throw new Error ( "Cannot rewrite rId " + rId ) ; rels [ "!id" ] [ relobj . Id ] = relobj ; rels [ ( "/" + relobj . Target ) . replace ( "//" , "/" ) ] = relobj } function write _zip ( wb , opts ) { if ( opts . bookType == "ods" ) return write _ods ( wb , opts ) ; if ( wb && ! wb . SSF ) { wb . SSF = SSF . get _table ( ) } if ( wb && wb . SSF ) { make _ssf ( SSF ) ; SSF . load _table ( wb . SSF ) ; opts . revssf = evert _num ( wb . SSF ) ; opts . revssf [ wb . SSF [ 65535 ] ] = 0 } 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 : "" } ; fix _write _opts ( opts = opts || { } ) ; var zip = new jszip ; var f = "" , rId = 0 ; opts . cellXfs = [ ] ; get _cell _style ( opts . cellXfs , { } , { revssf : { General : 0 } } ) ; if ( ! wb . Props ) wb . Props = { } ; f = "docProps/core.xml" ; zip . file ( f , write _core _props ( wb . Props , opts ) ) ; ct . coreprops . push ( f ) ; add _rels ( opts . rels , 2 , f , RELS . CORE _PROPS ) ; f = "docProps/app.xml" ; wb . Props . SheetNames = wb . SheetNames ; wb . Props . Worksheets = wb . SheetNames . length ; zip . file ( f , write _ext _props ( wb . Props , opts ) ) ; ct . extprops . push ( f ) ; add _rels ( opts . rels , 3 , f , RELS . EXT _PROPS ) ; if ( wb . Custprops !== wb . Props && keys ( wb . Custprops || { } ) . length > 0 ) { f = "docProps/custom.xml" ; zip . file ( f , write _cust _props ( wb . Custprops , opts ) ) ; ct . custprops . push ( f ) ; add _rels ( opts . rels , 4 , f , RELS . CUST _PROPS ) } f = "xl/workbook." + wbext ; zip . file ( f , write _wb ( wb , f , opts ) ) ; ct . workbooks . push ( f ) ; add _rels ( opts . rels , 1 , f , RELS . WB ) ; for ( rId = 1 ; rId <= wb . SheetNames . length ; ++ rId ) { f = "xl/worksheets/sheet" + rId + "." + wbext ; zip . file ( f , write _ws ( rId - 1 , f , opts , wb ) ) ; ct . sheets . push ( f ) ; add _rels ( opts . wbrels , rId , " worksheets / sh