forked from sheetjs/sheetjs
		
	
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| var XLSX = require('./');
 | |
| var sheetName = 'test & debug';
 | |
| 
 | |
| 
 | |
|   var ATTRIBUTE_VALUE_STYLE={
 | |
|       font: {
 | |
|       name:   "Arial",
 | |
|       sz:     10
 | |
|       }
 | |
|   };
 | |
| 
 | |
|   var Workbook = function(){
 | |
|       this.SheetNames = [];
 | |
|       this.Sheets = {};
 | |
|   };
 | |
| 
 | |
|   var range = {s: {c:10000000, r:10000000}, e:{c:0, r:0}};
 | |
| 
 | |
|   function updateRange(row, col) {
 | |
|       if (range.s.r > row) { range.s.r = row;}
 | |
|   if (range.s.c > col) { range.s.c = col; }
 | |
|   if (range.e.r < row) { range.e.r = row; }
 | |
|   if (range.e.c < col) { range.e.c = col; }
 | |
|     }
 | |
| 
 | |
|     function addCell(wb, ws, value, type, row, col, styles) {
 | |
| 
 | |
|         updateRange(row, col);
 | |
| 
 | |
|         var cell = {t: type, v: value, s:styles};
 | |
| 
 | |
|     // i use d to recognize that the format is a date, and if it is, i use z attribute to format it
 | |
|     if (cell.t === 'd') {
 | |
|         cell.t = 'n';
 | |
|         cell.z = XLSX.SSF._table[14];
 | |
|         }
 | |
| 
 | |
|     var cell_ref = XLSX.utils.encode_cell({c: col, r:row});
 | |
| 
 | |
|     ws[cell_ref] = cell;
 | |
|     }
 | |
| 
 | |
|     function s2ab(s) {
 | |
|         var buf = new ArrayBuffer(s.length);
 | |
|         var view = new Uint8Array(buf);
 | |
|         for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
 | |
|         return buf;
 | |
|         }
 | |
| 
 | |
|     function datenum(v, date1904) {
 | |
|         if(date1904) v+=1462;
 | |
|         var epoch = Date.parse(v);
 | |
|         return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
 | |
|         }
 | |
| 
 | |
|     var wb = new Workbook();
 | |
|     var ws = {};
 | |
| 
 | |
|     /* Here i add a cell with format number with value 10*/
 | |
|     addCell(wb, ws, 10, 'n', 0, 0, ATTRIBUTE_VALUE_STYLE);
 | |
| 
 | |
| /* Here i add a cell with format number that is current date*/
 | |
| addCell(wb, ws, datenum(new Date()), 'd', 0, 1, ATTRIBUTE_VALUE_STYLE);
 | |
| 
 | |
| /* Here i add a cell with format number with value 10, again another number*/
 | |
| addCell(wb, ws, 10, 'd', 0, 2, ATTRIBUTE_VALUE_STYLE);
 | |
| 
 | |
| /* Here i add a cell with format number with value 10, again another number*/
 | |
| addCell(wb, ws, "Hello null\u0000world", 's', 0, 3);
 | |
| 
 | |
| 
 | |
| ws['!ref'] = XLSX.utils.encode_range(range);
 | |
| 
 | |
| wb.SheetNames.push(sheetName);
 | |
| wb.Sheets[sheetName] = ws;
 | |
| 
 | |
| 
 | |
| ws['!rowBreaks'] = [12,24];
 | |
| ws['!colBreaks'] = [3,6];
 | |
| ws['!pageSetup'] = {scale: '140'};
 | |
| 
 | |
| /* bookType can be 'xszlsx' or 'xlsm' or 'xlsb' */
 | |
| var defaultCellStyle =  { font: { name: "Verdana", sz: 11, color: "FF00FF88"}, fill: {fgColor: {rgb: "FFFFAA00"}}};
 | |
| var wopts = { bookType:'xlsx', bookSST:false, type:'binary', defaultCellStyle: defaultCellStyle, showGridLines: false};
 | |
| 
 | |
| //console.log(JSON.stringify(wb, null,4))
 | |
| var OUTFILE = '/tmp/wb.xlsx';
 | |
| XLSX.writeFile(wb, OUTFILE, wopts);
 | |
| console.log("Results written to " + OUTFILE)
 |