我正在尝试使用SheetJS / xlsx导出excel,并希望格式化单元格。我正在使用以下代码,excel正在生成但无法格式化单元格。有人可以指出这个问题,也可以共享完整的示例代码吗?
加载库文件
剩下的代码是
function Workbook() { if(!(this instanceof Workbook)) return new Workbook(); this.SheetNames = []; this.Sheets = {}; } function sheet_from_array_of_arrays(data, opts) { var ws = {}; var range = {s: {c:10000000, r:10000000}, e: {c:0, r:0 }}; for(var R = 0; R != data.length; ++R) { for(var C = 0; C != data[R].length; ++C) { if(range.s.r > R) range.s.r = R; if(range.s.c > C) range.s.c = C; if(range.e.r < R) range.e.r = R; if(range.e.c < C) range.e.c = C; var cell = {v: data[R][C], s: { alignment: {textRotation: 90 }, font: {sz: 14, bold: true, color: #FF00FF } }; //cell.s = {} /*var cell ={ v: '2.4.2014', t: 's', r: '2.4.2014 ', h: '2.4.2014', w: '2.4.2014', s: { patternType: 'solid', fgColor: { theme: 8, tint: 0.3999755851924192, rgb: '9ED2E0' }, bgColor: { indexed: 64 } } }; */ if(cell.v == null) continue; var cell_ref = XLSX.utils.encode_cell({c:C,r:R}); if(typeof cell.v === 'number') cell.t = 'n'; else if(typeof cell.v === 'boolean') cell.t = 'b'; else if(cell.v instanceof Date) { cell.t = 'n'; cell.z = XLSX.SSF._table[14]; cell.v = datenum(cell.v); } else cell.t = 's'; ws[cell_ref] = cell; } } if(range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range); return ws; } 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 GenerateExcelFile(inData, colWidth){ var wb = new Workbook(); var ws = sheet_from_array_of_arrays(inData); var ws_name = "SheetJS"; /* add worksheet to workbook */ wb.SheetNames.push(ws_name); wb.Sheets[ws_name] = ws; /* TEST: column widths */ ws['!cols'] = colWidth; var wbout = XLSX.write(wb, {bookType:'xlsx', bookSST:true, type: 'binary'}); saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), "test.xlsx") }
用这些代码调用
var excelData = "JSON DATA"; var wscols = [ {wch:30}, {wch:20}, {wch:20} ];
请帮助我找出我错了。
谢谢苏曼