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)
							 |