forked from sheetjs/sheetjs
		
	version bump 0.9.11: streaming HTML write
This commit is contained in:
		
							parent
							
								
									1d61054602
								
							
						
					
					
						commit
						f51feb375a
					
				
							
								
								
									
										12
									
								
								README.md
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										12
									
								
								README.md
									
									
									
									
									
								
							| @ -410,10 +410,14 @@ saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), "test.xlsx"); | ||||
| 
 | ||||
| ### Streaming Write | ||||
| 
 | ||||
| `XLSX.stream.to_csv` is the streaming version of `XLSX.utils.sheet_to_csv`.  It | ||||
| takes the same arguments but returns a readable stream. | ||||
| The streaming write functions are available in the `XLSX.stream` object.  They | ||||
| take the same arguments as the normal write functions but return a readable | ||||
| stream.  They are only exposed in node. | ||||
| 
 | ||||
| <https://github.com/sheetjs/sheetaki> pipes CSV write stream to nodejs response. | ||||
| - `XLSX.stream.to_csv` is the streaming version of `XLSX.utils.sheet_to_csv`. | ||||
| - `XLSX.stream.to_html` is the streaming version of the HTML output type. | ||||
| 
 | ||||
| <https://github.com/sheetjs/sheetaki> pipes write streams to nodejs response. | ||||
| ## Interface | ||||
| 
 | ||||
| `XLSX` is the exposed variable in the browser and the exported node variable | ||||
| @ -439,6 +443,8 @@ Parse options are described in the [Parsing Options](#parsing-options) section. | ||||
| `XLSX.writeFileAsync(filename, wb, o, cb)` attempts to write `wb` to `filename`. | ||||
| If `o` is omitted, the writer will use the third argument as the callback. | ||||
| 
 | ||||
| `XLSX.stream` contains a set of streaming write functions. | ||||
| 
 | ||||
| Write options are described in the [Writing Options](#writing-options) section. | ||||
| 
 | ||||
| ### Utilities | ||||
|  | ||||
| @ -1 +1 @@ | ||||
| XLSX.version = '0.9.10'; | ||||
| XLSX.version = '0.9.11'; | ||||
|  | ||||
| @ -51,40 +51,42 @@ var HTML_ = (function() { | ||||
| 	function html_to_book(str/*:string*/, opts)/*:Workbook*/ { | ||||
| 		return sheet_to_workbook(html_to_sheet(str, opts), opts); | ||||
| 	} | ||||
| 	function make_html_row(ws/*:Worksheet*/, r/*:Range*/, R/*:number*/, o)/*:string*/ { | ||||
| 		var M = (ws['!merges'] ||[]); | ||||
| 		var oo = []; | ||||
| 		for(var C = r.s.c; C <= r.e.c; ++C) { | ||||
| 			var RS = 0, CS = 0; | ||||
| 			for(var j = 0; j < M.length; ++j) { | ||||
| 				if(M[j].s.r > R || M[j].s.c > C) continue; | ||||
| 				if(M[j].e.r < R || M[j].e.c < C) continue; | ||||
| 				if(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; } | ||||
| 				RS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break; | ||||
| 			} | ||||
| 			if(RS < 0) continue; | ||||
| 			var coord = encode_cell({r:R,c:C}); | ||||
| 			var cell = o.dense ? (ws[R]||[])[C] : ws[coord]; | ||||
| 			if(!cell || cell.v == null) { oo.push("<td></td>"); continue; } | ||||
| 			/* TODO: html entities */ | ||||
| 			var w = cell.h || escapexml(cell.w || (format_cell(cell), cell.w) || ""); | ||||
| 			var sp = {}; | ||||
| 			if(RS > 1) sp.rowspan = RS; | ||||
| 			if(CS > 1) sp.colspan = CS; | ||||
| 			oo.push(writextag('td', w, sp)); | ||||
| 		} | ||||
| 		return "<tr>" + oo.join("") + "</tr>"; | ||||
| 	} | ||||
| 	function sheet_to_html(ws/*:Worksheet*/, opts)/*:string*/ { | ||||
| 		var o/*:Array<string>*/ = []; | ||||
| 		var r = decode_range(ws['!ref']), cell/*:Cell*/; | ||||
| 		var dense = Array.isArray(ws); | ||||
| 		var M = (ws['!merges'] ||[]); | ||||
| 		for(var R = r.s.r; R <= r.e.r; ++R) { | ||||
| 			var oo = []; | ||||
| 			for(var C = r.s.c; C <= r.e.c; ++C) { | ||||
| 				var RS = 0, CS = 0; | ||||
| 				for(var j = 0; j < M.length; ++j) { | ||||
| 					if(M[j].s.r > R || M[j].s.c > C) continue; | ||||
| 					if(M[j].e.r < R || M[j].e.c < C) continue; | ||||
| 					if(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; } | ||||
| 					RS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break; | ||||
| 				} | ||||
| 				if(RS < 0) continue; | ||||
| 				var coord = encode_cell({r:R,c:C}); | ||||
| 				cell = dense ? (ws[R]||[])[C] : ws[coord]; | ||||
| 				if(!cell || cell.v == null) { oo.push("<td></td>"); continue; } | ||||
| 				/* TODO: html entities */ | ||||
| 				var w = cell.h || escapexml(cell.w || (format_cell(cell), cell.w) || ""); | ||||
| 				var sp = {}; | ||||
| 				if(RS > 1) sp.rowspan = RS; | ||||
| 				if(CS > 1) sp.colspan = CS; | ||||
| 				oo.push(writextag('td', w, sp)); | ||||
| 			} | ||||
| 			o.push("<tr>" + oo.join("") + "</tr>"); | ||||
| 		} | ||||
| 		var r = decode_range(ws['!ref']); | ||||
| 		o.dense = Array.isArray(ws); | ||||
| 		for(var R = r.s.r; R <= r.e.r; ++R) o.push(make_html_row(ws, r, R, o)); | ||||
| 		return "<html><body><table>" + o.join("") + "</table></body></html>"; | ||||
| 	} | ||||
| 
 | ||||
| 	return { | ||||
| 		to_workbook: html_to_book, | ||||
| 		to_sheet: html_to_sheet, | ||||
| 		_row: make_html_row, | ||||
| 		from_sheet: sheet_to_html | ||||
| 	}; | ||||
| })(); | ||||
|  | ||||
| @ -28,8 +28,35 @@ if(has_buf && typeof require != 'undefined') (function() { | ||||
| 		return stream; | ||||
| 	}; | ||||
| 
 | ||||
| 	var HTML_BEGIN = "<html><body><table>"; | ||||
| 	var HTML_END = "</table></body></html>"; | ||||
| 
 | ||||
| 	var write_html_stream = function(sheet/*:Worksheet*/, opts) { | ||||
| 		var stream = Readable(); | ||||
| 
 | ||||
| 		var o/*:Array<string>*/ = []; | ||||
| 		var r = decode_range(sheet['!ref']), cell/*:Cell*/; | ||||
| 		o.dense = Array.isArray(sheet); | ||||
| 		stream.push(HTML_BEGIN); | ||||
| 
 | ||||
| 		var R = r.s.r; | ||||
| 		var end = false; | ||||
| 		stream._read = function() { | ||||
| 			if(R > r.e.r) { | ||||
| 				if(!end) { end = true; stream.push(HTML_END); } | ||||
| 				return stream.push(null); | ||||
| 			} | ||||
| 			while(R <= r.e.r) { | ||||
| 				stream.push(HTML_._row(sheet, r, R, o)); | ||||
| 				++R; | ||||
| 				break; | ||||
| 			} | ||||
| 		}; | ||||
| 		return stream; | ||||
| 	}; | ||||
| 
 | ||||
| 	XLSX.stream = { | ||||
| 		to_html: write_html_stream, | ||||
| 		to_csv: write_csv_stream | ||||
| 	}; | ||||
| })(); | ||||
|  | ||||
							
								
								
									
										27
									
								
								dist/xlsx.core.min.js
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										27
									
								
								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
											
										
									
								
							
							
								
								
									
										26
									
								
								dist/xlsx.full.min.js
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										26
									
								
								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
											
										
									
								
							
							
								
								
									
										1056
									
								
								dist/xlsx.js
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										1056
									
								
								dist/xlsx.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										26
									
								
								dist/xlsx.min.js
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										26
									
								
								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,10 @@ | ||||
| ### Streaming Write | ||||
| 
 | ||||
| `XLSX.stream.to_csv` is the streaming version of `XLSX.utils.sheet_to_csv`.  It | ||||
| takes the same arguments but returns a readable stream. | ||||
| The streaming write functions are available in the `XLSX.stream` object.  They | ||||
| take the same arguments as the normal write functions but return a readable | ||||
| stream.  They are only exposed in node. | ||||
| 
 | ||||
| <https://github.com/sheetjs/sheetaki> pipes CSV write stream to nodejs response. | ||||
| - `XLSX.stream.to_csv` is the streaming version of `XLSX.utils.sheet_to_csv`. | ||||
| - `XLSX.stream.to_html` is the streaming version of the HTML output type. | ||||
| 
 | ||||
| <https://github.com/sheetjs/sheetaki> pipes write streams to nodejs response. | ||||
|  | ||||
| @ -23,6 +23,8 @@ Parse options are described in the [Parsing Options](#parsing-options) section. | ||||
| `XLSX.writeFileAsync(filename, wb, o, cb)` attempts to write `wb` to `filename`. | ||||
| If `o` is omitted, the writer will use the third argument as the callback. | ||||
| 
 | ||||
| `XLSX.stream` contains a set of streaming write functions. | ||||
| 
 | ||||
| Write options are described in the [Writing Options](#writing-options) section. | ||||
| 
 | ||||
| ### Utilities | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| { | ||||
| 	"name": "xlsx", | ||||
| 	"version": "0.9.10", | ||||
| 	"version": "0.9.11", | ||||
| 	"author": "sheetjs", | ||||
| 	"description": "Excel (XLSB/XLSX/XLSM/XLS/XML) and ODS (ODS/FODS/UOS) spreadsheet parser and writer", | ||||
| 	"keywords": [ "excel", "xls", "xlsx", "xlsb", "xlsm", "ods", "office", "spreadsheet" ], | ||||
|  | ||||
							
								
								
									
										83
									
								
								xlsx.flow.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										83
									
								
								xlsx.flow.js
									
									
									
									
									
								
							| @ -5,7 +5,7 @@ | ||||
| /*exported XLSX */ | ||||
| var XLSX = {}; | ||||
| (function make_xlsx(XLSX){ | ||||
| XLSX.version = '0.9.10'; | ||||
| XLSX.version = '0.9.11'; | ||||
| var current_codepage = 1200, current_cptable; | ||||
| /*:: declare var cptable:any; */ | ||||
| if(typeof module !== "undefined" && typeof require !== 'undefined') { | ||||
| @ -15111,40 +15111,42 @@ var HTML_ = (function() { | ||||
| 	function html_to_book(str/*:string*/, opts)/*:Workbook*/ { | ||||
| 		return sheet_to_workbook(html_to_sheet(str, opts), opts); | ||||
| 	} | ||||
| 	function make_html_row(ws/*:Worksheet*/, r/*:Range*/, R/*:number*/, o)/*:string*/ { | ||||
| 		var M = (ws['!merges'] ||[]); | ||||
| 		var oo = []; | ||||
| 		for(var C = r.s.c; C <= r.e.c; ++C) { | ||||
| 			var RS = 0, CS = 0; | ||||
| 			for(var j = 0; j < M.length; ++j) { | ||||
| 				if(M[j].s.r > R || M[j].s.c > C) continue; | ||||
| 				if(M[j].e.r < R || M[j].e.c < C) continue; | ||||
| 				if(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; } | ||||
| 				RS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break; | ||||
| 			} | ||||
| 			if(RS < 0) continue; | ||||
| 			var coord = encode_cell({r:R,c:C}); | ||||
| 			var cell = o.dense ? (ws[R]||[])[C] : ws[coord]; | ||||
| 			if(!cell || cell.v == null) { oo.push("<td></td>"); continue; } | ||||
| 			/* TODO: html entities */ | ||||
| 			var w = cell.h || escapexml(cell.w || (format_cell(cell), cell.w) || ""); | ||||
| 			var sp = {}; | ||||
| 			if(RS > 1) sp.rowspan = RS; | ||||
| 			if(CS > 1) sp.colspan = CS; | ||||
| 			oo.push(writextag('td', w, sp)); | ||||
| 		} | ||||
| 		return "<tr>" + oo.join("") + "</tr>"; | ||||
| 	} | ||||
| 	function sheet_to_html(ws/*:Worksheet*/, opts)/*:string*/ { | ||||
| 		var o/*:Array<string>*/ = []; | ||||
| 		var r = decode_range(ws['!ref']), cell/*:Cell*/; | ||||
| 		var dense = Array.isArray(ws); | ||||
| 		var M = (ws['!merges'] ||[]); | ||||
| 		for(var R = r.s.r; R <= r.e.r; ++R) { | ||||
| 			var oo = []; | ||||
| 			for(var C = r.s.c; C <= r.e.c; ++C) { | ||||
| 				var RS = 0, CS = 0; | ||||
| 				for(var j = 0; j < M.length; ++j) { | ||||
| 					if(M[j].s.r > R || M[j].s.c > C) continue; | ||||
| 					if(M[j].e.r < R || M[j].e.c < C) continue; | ||||
| 					if(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; } | ||||
| 					RS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break; | ||||
| 				} | ||||
| 				if(RS < 0) continue; | ||||
| 				var coord = encode_cell({r:R,c:C}); | ||||
| 				cell = dense ? (ws[R]||[])[C] : ws[coord]; | ||||
| 				if(!cell || cell.v == null) { oo.push("<td></td>"); continue; } | ||||
| 				/* TODO: html entities */ | ||||
| 				var w = cell.h || escapexml(cell.w || (format_cell(cell), cell.w) || ""); | ||||
| 				var sp = {}; | ||||
| 				if(RS > 1) sp.rowspan = RS; | ||||
| 				if(CS > 1) sp.colspan = CS; | ||||
| 				oo.push(writextag('td', w, sp)); | ||||
| 			} | ||||
| 			o.push("<tr>" + oo.join("") + "</tr>"); | ||||
| 		} | ||||
| 		var r = decode_range(ws['!ref']); | ||||
| 		o.dense = Array.isArray(ws); | ||||
| 		for(var R = r.s.r; R <= r.e.r; ++R) o.push(make_html_row(ws, r, R, o)); | ||||
| 		return "<html><body><table>" + o.join("") + "</table></body></html>"; | ||||
| 	} | ||||
| 
 | ||||
| 	return { | ||||
| 		to_workbook: html_to_book, | ||||
| 		to_sheet: html_to_sheet, | ||||
| 		_row: make_html_row, | ||||
| 		from_sheet: sheet_to_html | ||||
| 	}; | ||||
| })(); | ||||
| @ -16614,8 +16616,35 @@ if(has_buf && typeof require != 'undefined') (function() { | ||||
| 		return stream; | ||||
| 	}; | ||||
| 
 | ||||
| 	var HTML_BEGIN = "<html><body><table>"; | ||||
| 	var HTML_END = "</table></body></html>"; | ||||
| 
 | ||||
| 	var write_html_stream = function(sheet/*:Worksheet*/, opts) { | ||||
| 		var stream = Readable(); | ||||
| 
 | ||||
| 		var o/*:Array<string>*/ = []; | ||||
| 		var r = decode_range(sheet['!ref']), cell/*:Cell*/; | ||||
| 		o.dense = Array.isArray(sheet); | ||||
| 		stream.push(HTML_BEGIN); | ||||
| 
 | ||||
| 		var R = r.s.r; | ||||
| 		var end = false; | ||||
| 		stream._read = function() { | ||||
| 			if(R > r.e.r) { | ||||
| 				if(!end) { end = true; stream.push(HTML_END); } | ||||
| 				return stream.push(null); | ||||
| 			} | ||||
| 			while(R <= r.e.r) { | ||||
| 				stream.push(HTML_._row(sheet, r, R, o)); | ||||
| 				++R; | ||||
| 				break; | ||||
| 			} | ||||
| 		}; | ||||
| 		return stream; | ||||
| 	}; | ||||
| 
 | ||||
| 	XLSX.stream = { | ||||
| 		to_html: write_html_stream, | ||||
| 		to_csv: write_csv_stream | ||||
| 	}; | ||||
| })(); | ||||
|  | ||||
							
								
								
									
										83
									
								
								xlsx.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										83
									
								
								xlsx.js
									
									
									
									
									
								
							| @ -5,7 +5,7 @@ | ||||
| /*exported XLSX */ | ||||
| var XLSX = {}; | ||||
| (function make_xlsx(XLSX){ | ||||
| XLSX.version = '0.9.10'; | ||||
| XLSX.version = '0.9.11'; | ||||
| var current_codepage = 1200, current_cptable; | ||||
| if(typeof module !== "undefined" && typeof require !== 'undefined') { | ||||
| 	if(typeof cptable === 'undefined') cptable = require('./dist/cpexcel.js'); | ||||
| @ -15050,40 +15050,42 @@ var HTML_ = (function() { | ||||
| 	function html_to_book(str, opts) { | ||||
| 		return sheet_to_workbook(html_to_sheet(str, opts), opts); | ||||
| 	} | ||||
| 	function make_html_row(ws, r, R, o) { | ||||
| 		var M = (ws['!merges'] ||[]); | ||||
| 		var oo = []; | ||||
| 		for(var C = r.s.c; C <= r.e.c; ++C) { | ||||
| 			var RS = 0, CS = 0; | ||||
| 			for(var j = 0; j < M.length; ++j) { | ||||
| 				if(M[j].s.r > R || M[j].s.c > C) continue; | ||||
| 				if(M[j].e.r < R || M[j].e.c < C) continue; | ||||
| 				if(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; } | ||||
| 				RS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break; | ||||
| 			} | ||||
| 			if(RS < 0) continue; | ||||
| 			var coord = encode_cell({r:R,c:C}); | ||||
| 			var cell = o.dense ? (ws[R]||[])[C] : ws[coord]; | ||||
| 			if(!cell || cell.v == null) { oo.push("<td></td>"); continue; } | ||||
| 			/* TODO: html entities */ | ||||
| 			var w = cell.h || escapexml(cell.w || (format_cell(cell), cell.w) || ""); | ||||
| 			var sp = {}; | ||||
| 			if(RS > 1) sp.rowspan = RS; | ||||
| 			if(CS > 1) sp.colspan = CS; | ||||
| 			oo.push(writextag('td', w, sp)); | ||||
| 		} | ||||
| 		return "<tr>" + oo.join("") + "</tr>"; | ||||
| 	} | ||||
| 	function sheet_to_html(ws, opts) { | ||||
| 		var o = []; | ||||
| 		var r = decode_range(ws['!ref']), cell; | ||||
| 		var dense = Array.isArray(ws); | ||||
| 		var M = (ws['!merges'] ||[]); | ||||
| 		for(var R = r.s.r; R <= r.e.r; ++R) { | ||||
| 			var oo = []; | ||||
| 			for(var C = r.s.c; C <= r.e.c; ++C) { | ||||
| 				var RS = 0, CS = 0; | ||||
| 				for(var j = 0; j < M.length; ++j) { | ||||
| 					if(M[j].s.r > R || M[j].s.c > C) continue; | ||||
| 					if(M[j].e.r < R || M[j].e.c < C) continue; | ||||
| 					if(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; } | ||||
| 					RS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break; | ||||
| 				} | ||||
| 				if(RS < 0) continue; | ||||
| 				var coord = encode_cell({r:R,c:C}); | ||||
| 				cell = dense ? (ws[R]||[])[C] : ws[coord]; | ||||
| 				if(!cell || cell.v == null) { oo.push("<td></td>"); continue; } | ||||
| 				/* TODO: html entities */ | ||||
| 				var w = cell.h || escapexml(cell.w || (format_cell(cell), cell.w) || ""); | ||||
| 				var sp = {}; | ||||
| 				if(RS > 1) sp.rowspan = RS; | ||||
| 				if(CS > 1) sp.colspan = CS; | ||||
| 				oo.push(writextag('td', w, sp)); | ||||
| 			} | ||||
| 			o.push("<tr>" + oo.join("") + "</tr>"); | ||||
| 		} | ||||
| 		var r = decode_range(ws['!ref']); | ||||
| 		o.dense = Array.isArray(ws); | ||||
| 		for(var R = r.s.r; R <= r.e.r; ++R) o.push(make_html_row(ws, r, R, o)); | ||||
| 		return "<html><body><table>" + o.join("") + "</table></body></html>"; | ||||
| 	} | ||||
| 
 | ||||
| 	return { | ||||
| 		to_workbook: html_to_book, | ||||
| 		to_sheet: html_to_sheet, | ||||
| 		_row: make_html_row, | ||||
| 		from_sheet: sheet_to_html | ||||
| 	}; | ||||
| })(); | ||||
| @ -16544,8 +16546,35 @@ if(has_buf && typeof require != 'undefined') (function() { | ||||
| 		return stream; | ||||
| 	}; | ||||
| 
 | ||||
| 	var HTML_BEGIN = "<html><body><table>"; | ||||
| 	var HTML_END = "</table></body></html>"; | ||||
| 
 | ||||
| 	var write_html_stream = function(sheet, opts) { | ||||
| 		var stream = Readable(); | ||||
| 
 | ||||
| 		var o = []; | ||||
| 		var r = decode_range(sheet['!ref']), cell; | ||||
| 		o.dense = Array.isArray(sheet); | ||||
| 		stream.push(HTML_BEGIN); | ||||
| 
 | ||||
| 		var R = r.s.r; | ||||
| 		var end = false; | ||||
| 		stream._read = function() { | ||||
| 			if(R > r.e.r) { | ||||
| 				if(!end) { end = true; stream.push(HTML_END); } | ||||
| 				return stream.push(null); | ||||
| 			} | ||||
| 			while(R <= r.e.r) { | ||||
| 				stream.push(HTML_._row(sheet, r, R, o)); | ||||
| 				++R; | ||||
| 				break; | ||||
| 			} | ||||
| 		}; | ||||
| 		return stream; | ||||
| 	}; | ||||
| 
 | ||||
| 	XLSX.stream = { | ||||
| 		to_html: write_html_stream, | ||||
| 		to_csv: write_csv_stream | ||||
| 	}; | ||||
| })(); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user