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