forked from sheetjs/sheetjs
		
	version bump 0.7.3: performance
- 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
This commit is contained in:
		
							parent
							
								
									86f21d76ce
								
							
						
					
					
						commit
						489b9cdde4
					
				| @ -125,7 +125,7 @@ The exported `read` and `readFile` functions accept an options argument: | ||||
| 
 | ||||
| | Option Name | Default | Description | | ||||
| | :---------- | ------: | :---------- | | ||||
| | cellFormula | true    | Save formulae to the .f field ** | | ||||
| | cellFormula | true    | Save formulae to the .f field | | ||||
| | cellHTML    | true    | Parse rich text and save HTML to the .h field | | ||||
| | cellNF      | false   | Save number format string to the .z field | | ||||
| | sheetStubs  | false   | Create cell objects for stub cells | | ||||
| @ -136,8 +136,6 @@ The exported `read` and `readFile` functions accept an options argument: | ||||
| | bookSheets  | false   | If true, only parse enough to get the sheet names | | ||||
| | bookVBA     | false   | If true, expose vbaProject.bin to `vbaraw` field ** | | ||||
| 
 | ||||
| - `cellFormula` only applies to constructing XLSB formulae.  XLSX/XLSM formulae | ||||
|   are stored in plaintext, but XLSB formulae are stored in a binary format. | ||||
| - Even if `cellNF` is false, formatted text (.w) will be generated | ||||
| - In some cases, sheets may be parsed even if `bookSheets` is false. | ||||
| - `bookSheets` and `bookProps` combine to give both sets of information | ||||
|  | ||||
| @ -20,6 +20,8 @@ program | ||||
| 	.option('-F, --field-sep <sep>', 'CSV field separator', ",") | ||||
| 	.option('-R, --row-sep <sep>', 'CSV row separator', "\n") | ||||
| 	.option('-n, --sheet-rows <num>', 'Number of rows to process (0=all rows)') | ||||
| 	.option('--no-sst', 'do not generate sst') | ||||
| 	.option('--perf', 'do not generate output') | ||||
| 	.option('--dev', 'development mode') | ||||
| 	.option('--read', 'read but do not print out contents') | ||||
| 	.option('-q, --quiet', 'quiet mode'); | ||||
| @ -57,6 +59,9 @@ if(program.xlsx || program.xlsm || program.xlsb) { | ||||
| 	opts.cellNF = true; | ||||
| 	if(program.output) sheetname = program.output; | ||||
| } | ||||
| else if(program.formulae); | ||||
| else opts.cellFormula = false; | ||||
| 
 | ||||
| if(program.dev) { | ||||
| 	X.verbose = 2; | ||||
| 	opts.WTF = true; | ||||
| @ -77,7 +82,7 @@ if(program.listSheets) { | ||||
| 	process.exit(0); | ||||
| } | ||||
| 
 | ||||
| var wopts = {WTF:opts.WTF}; | ||||
| var wopts = {WTF:opts.WTF, bookSST:program.sst}; | ||||
| 
 | ||||
| if(program.xlsx) return X.writeFile(wb, sheetname || (filename + ".xlsx"), wopts); | ||||
| if(program.xlsm) return X.writeFile(wb, sheetname || (filename + ".xlsm"), wopts); | ||||
| @ -95,6 +100,8 @@ try { | ||||
| 	process.exit(4); | ||||
| } | ||||
| 
 | ||||
| if(program.perf) return; | ||||
| 
 | ||||
| var oo = "";  | ||||
| if(!program.quiet) console.error(target_sheet); | ||||
| if(program.formulae) oo = X.utils.get_formulae(ws).join("\n"); | ||||
|  | ||||
| @ -1 +1 @@ | ||||
| XLSX.version = '0.7.2'; | ||||
| XLSX.version = '0.7.3'; | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| var current_codepage = 1252, current_cptable; | ||||
| if(typeof module !== "undefined" && typeof require !== 'undefined') { | ||||
| 	if(typeof cptable === 'undefined') cptable = require('codepage'); | ||||
| 	if(typeof cptable === 'undefined') cptable = require('./dist/cpexcel'); | ||||
| 	current_cptable = cptable[current_codepage]; | ||||
| } | ||||
| function reset_cp() { set_cp(1252); } | ||||
|  | ||||
| @ -27,7 +27,8 @@ var rencstr = "&<>'\"".split(""); | ||||
| // TODO: CP remap (need to read file version to determine OS)
 | ||||
| function unescapexml(text){ | ||||
| 	var s = text + ''; | ||||
| 	for(var y in encodings) s = s.replace(new RegExp(y,'g'), encodings[y]); | ||||
| 	s = s.replace(/"/g, '"').replace(/'/g, "'").replace(/>/g, ">").replace(/</g, "<").replace(/&/g, "&"); | ||||
| 	//for(var y in encodings) s = s.replace(new RegExp(y,'g'), encodings[y]);
 | ||||
| 	return s.replace(/_x([0-9a-fA-F]*)_/g,function(m,c) {return _chr(parseInt(c,16));}); | ||||
| } | ||||
| function escapexml(text){ | ||||
| @ -48,6 +49,7 @@ function parsexmlbool(value, tag) { | ||||
| 
 | ||||
| var utf8read = function(orig) { | ||||
| 	var out = [], i = 0, c = 0, c1 = 0, c2 = 0, c3 = 0; | ||||
| 	if(!orig.match(/[\u0080-\uffff]/)) return orig; | ||||
| 	while (i < orig.length) { | ||||
| 		c = orig.charCodeAt(i++); | ||||
| 		if (c < 128) out.push(_chr(c)); | ||||
|  | ||||
| @ -18,7 +18,7 @@ function parse_ws_xml(data, opts, rels) { | ||||
| 	} | ||||
| 
 | ||||
| 	var refguess = {s: {r:1000000, c:1000000}, e: {r:0, c:0} }; | ||||
| 	var q = ["v","f"]; | ||||
| 	var q = (opts.cellFormula ? ["v","f"] : ["v"]); | ||||
| 	var sidx = 0; | ||||
| 
 | ||||
| 	/* 18.3.1.80 sheetData CT_SheetData ? */ | ||||
|  | ||||
							
								
								
									
										2
									
								
								dist/cpexcel.js
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										2
									
								
								dist/cpexcel.js
									
									
									
									
										vendored
									
									
								
							| @ -959,10 +959,12 @@ if (typeof module !== 'undefined' && module.exports) module.exports = cptable; | ||||
|   var encache = function(cp) { | ||||
|     if(typeof Buffer !== 'undefined') { | ||||
|       sbcs_cache.forEach(function(s) { | ||||
|         if(!cpt[s]) return; | ||||
|         cpdcache[s] = sbcs_decode(s); | ||||
|         cpecache[s] = sbcs_encode(s); | ||||
|       }); | ||||
|       dbcs_cache.forEach(function(s) { | ||||
|         if(!cpt[s]) return; | ||||
|         cpdcache[s] = dbcs_decode(s); | ||||
|         cpecache[s] = dbcs_encode(s); | ||||
|       }); | ||||
|  | ||||
							
								
								
									
										6
									
								
								dist/xlsx.core.min.js
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										6
									
								
								dist/xlsx.core.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/xlsx.core.min.map
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										2
									
								
								dist/xlsx.core.min.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										8
									
								
								dist/xlsx.full.min.js
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										8
									
								
								dist/xlsx.full.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/xlsx.full.min.map
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										2
									
								
								dist/xlsx.full.min.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										10
									
								
								dist/xlsx.js
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										10
									
								
								dist/xlsx.js
									
									
									
									
										vendored
									
									
								
							| @ -2,10 +2,10 @@ | ||||
| /* vim: set ts=2: */ | ||||
| var XLSX = {}; | ||||
| (function(XLSX){ | ||||
| XLSX.version = '0.7.2'; | ||||
| XLSX.version = '0.7.3'; | ||||
| var current_codepage = 1252, current_cptable; | ||||
| if(typeof module !== "undefined" && typeof require !== 'undefined') { | ||||
| 	if(typeof cptable === 'undefined') cptable = require('codepage'); | ||||
| 	if(typeof cptable === 'undefined') cptable = require('./dist/cpexcel'); | ||||
| 	current_cptable = cptable[current_codepage]; | ||||
| } | ||||
| function reset_cp() { set_cp(1252); } | ||||
| @ -675,7 +675,8 @@ var rencstr = "&<>'\"".split(""); | ||||
| // TODO: CP remap (need to read file version to determine OS)
 | ||||
| function unescapexml(text){ | ||||
| 	var s = text + ''; | ||||
| 	for(var y in encodings) s = s.replace(new RegExp(y,'g'), encodings[y]); | ||||
| 	s = s.replace(/"/g, '"').replace(/'/g, "'").replace(/>/g, ">").replace(/</g, "<").replace(/&/g, "&"); | ||||
| 	//for(var y in encodings) s = s.replace(new RegExp(y,'g'), encodings[y]);
 | ||||
| 	return s.replace(/_x([0-9a-fA-F]*)_/g,function(m,c) {return _chr(parseInt(c,16));}); | ||||
| } | ||||
| function escapexml(text){ | ||||
| @ -696,6 +697,7 @@ function parsexmlbool(value, tag) { | ||||
| 
 | ||||
| var utf8read = function(orig) { | ||||
| 	var out = [], i = 0, c = 0, c1 = 0, c2 = 0, c3 = 0; | ||||
| 	if(!orig.match(/[\u0080-\uffff]/)) return orig; | ||||
| 	while (i < orig.length) { | ||||
| 		c = orig.charCodeAt(i++); | ||||
| 		if (c < 128) out.push(_chr(c)); | ||||
| @ -2165,7 +2167,7 @@ function parse_ws_xml(data, opts, rels) { | ||||
| 	} | ||||
| 
 | ||||
| 	var refguess = {s: {r:1000000, c:1000000}, e: {r:0, c:0} }; | ||||
| 	var q = ["v","f"]; | ||||
| 	var q = (opts.cellFormula ? ["v","f"] : ["v"]); | ||||
| 	var sidx = 0; | ||||
| 
 | ||||
| 	/* 18.3.1.80 sheetData CT_SheetData ? */ | ||||
|  | ||||
							
								
								
									
										4
									
								
								dist/xlsx.min.js
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										4
									
								
								dist/xlsx.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/xlsx.min.map
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										2
									
								
								dist/xlsx.min.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -1,6 +1,6 @@ | ||||
| { | ||||
| 	"name": "xlsx", | ||||
| 	"version": "0.7.2-a", | ||||
| 	"version": "0.7.3", | ||||
| 	"author": "sheetjs", | ||||
| 	"description": "XLSB/XLSX/XLSM (Excel 2007+ Spreadsheet) parser and writer", | ||||
| 	"keywords": [ "xlsx", "xlsb", "xlsm", "office", "excel", "spreadsheet" ], | ||||
|  | ||||
| @ -82,6 +82,7 @@ apachepoi_53568.xlsx | ||||
| apachepoi_53734.xlsx | ||||
| apachepoi_53798.xlsx | ||||
| apachepoi_53798_shiftNegative_TMPL.xlsx | ||||
| apachepoi_54034.xlsx | ||||
| apachepoi_54071.xlsx | ||||
| apachepoi_54084 - Greek - beyond BMP.xlsx | ||||
| apachepoi_54206.xlsx | ||||
|  | ||||
							
								
								
									
										10
									
								
								xlsx.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										10
									
								
								xlsx.js
									
									
									
									
									
								
							| @ -2,10 +2,10 @@ | ||||
| /* vim: set ts=2: */ | ||||
| var XLSX = {}; | ||||
| (function(XLSX){ | ||||
| XLSX.version = '0.7.2'; | ||||
| XLSX.version = '0.7.3'; | ||||
| var current_codepage = 1252, current_cptable; | ||||
| if(typeof module !== "undefined" && typeof require !== 'undefined') { | ||||
| 	if(typeof cptable === 'undefined') cptable = require('codepage'); | ||||
| 	if(typeof cptable === 'undefined') cptable = require('./dist/cpexcel'); | ||||
| 	current_cptable = cptable[current_codepage]; | ||||
| } | ||||
| function reset_cp() { set_cp(1252); } | ||||
| @ -675,7 +675,8 @@ var rencstr = "&<>'\"".split(""); | ||||
| // TODO: CP remap (need to read file version to determine OS)
 | ||||
| function unescapexml(text){ | ||||
| 	var s = text + ''; | ||||
| 	for(var y in encodings) s = s.replace(new RegExp(y,'g'), encodings[y]); | ||||
| 	s = s.replace(/"/g, '"').replace(/'/g, "'").replace(/>/g, ">").replace(/</g, "<").replace(/&/g, "&"); | ||||
| 	//for(var y in encodings) s = s.replace(new RegExp(y,'g'), encodings[y]);
 | ||||
| 	return s.replace(/_x([0-9a-fA-F]*)_/g,function(m,c) {return _chr(parseInt(c,16));}); | ||||
| } | ||||
| function escapexml(text){ | ||||
| @ -696,6 +697,7 @@ function parsexmlbool(value, tag) { | ||||
| 
 | ||||
| var utf8read = function(orig) { | ||||
| 	var out = [], i = 0, c = 0, c1 = 0, c2 = 0, c3 = 0; | ||||
| 	if(!orig.match(/[\u0080-\uffff]/)) return orig; | ||||
| 	while (i < orig.length) { | ||||
| 		c = orig.charCodeAt(i++); | ||||
| 		if (c < 128) out.push(_chr(c)); | ||||
| @ -2165,7 +2167,7 @@ function parse_ws_xml(data, opts, rels) { | ||||
| 	} | ||||
| 
 | ||||
| 	var refguess = {s: {r:1000000, c:1000000}, e: {r:0, c:0} }; | ||||
| 	var q = ["v","f"]; | ||||
| 	var q = (opts.cellFormula ? ["v","f"] : ["v"]); | ||||
| 	var sidx = 0; | ||||
| 
 | ||||
| 	/* 18.3.1.80 sheetData CT_SheetData ? */ | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user