此为参照示例https://github.com/SheetJS/js-xlsx/blob/master/tests/write.js ,它不具有用于在XLSX电子表格单元格式的任何实现我使用cell.f =“试图= SUM (A1 + B1)”为小区C1和cell.v作为总和值这是3.但我没有成功。 与导出的文件,在MS Excel打开时,所述细胞只含有数据和选择时,没有显示出这是我在分配F(X)字段中的任何公式。
有人可以张贴我实际上使用的功能/特性“.F”和‘cellFormula’一个例子
会有很大的帮助。 我只是需要与静态值工作的例子。
细胞对象具有性态f
,这是您要使用的公式。 在这里你可以看到所有的选项: https://github.com/SheetJS/js-xlsx#cell-object 。
这里是使用公式的一个例子:
var xlsx = require('xlsx');
//workBook class
function Workbook() {
if(!(this instanceof Workbook)) return new Workbook();
this.SheetNames = [];
this.Sheets = {};
}
var exportBook = new Workbook();
var worksheet = {};
var cell = {f: 'A2+A3'};
var cellRef = xlsx.utils.encode_cell({r:0, c:0});
var range = {s:{r: 0, c: 0},
e: {r: 10, c: 10}};
worksheet[cellRef] = cell;
worksheet['!ref'] = xlsx.utils.encode_range(range);
exportBook.SheetNames.push('test');
exportBook.Sheets.test = worksheet;
xlsx.writeFile(exportBook, 'formula sample.xlsx');
在这里,A1应该具有式A2 + A3。
希望能帮助到你 :)
这里是我的解决办法
function download() {
TheResourceService.get({ xId: $stateParams.xId }, function(result) {
var sheetName = 'first_sheet';
var wopts = { bookType: 'xlsx', bookSST: true, type: 'binary' };
var fileName = "the_excel_file.xlsx";
var columns = ['id', 'name', 'point'];
var data = [
[1, 'Kyle', 20],
[2, 'Allen', 32],
[3, 'Chris', 18],
[4, 'Tim', 11]
];
var wb = XLSX.utils.book_new();
var ws = uigrid_to_sheet(data, columns);
ws['!ref'] = XLSX.utils.encode_range({
s: { c: 0, r: 0 },
e: { c: 3, r: 1 + data.length + 1 }
});
ws['C6'] = { f: 'SUM(C2:C5)' };
ws['B6'] = { v: 'Total' };
XLSX.utils.book_append_sheet(wb, ws, sheetName);
var wbout = XLSX.write(wb, wopts);
saveAs(new Blob([s2ab(wbout)], { type: 'application/octet-stream' }), fileName);
})
}
function uigrid_to_sheet(data, columns) {
var o = [],
oo = [],
i = 0,
j = 0;
/* column headers */
for (j = 0; j < columns.length; ++j) oo.push((columns[j]));
o.push(oo);
/* table data */
for (i = 0; i < data.length; ++i) {
oo = [];
for (j = 0; j < data[i].length; ++j) oo.push((data[i][j]));
o.push(oo);
}
/* aoa_to_sheet converts an array of arrays into a worksheet object */
return XLSX.utils.aoa_to_sheet(o);
}
function s2ab(s) {
if (typeof ArrayBuffer !== 'undefined') {
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;
} else {
var buf = new Array(s.length);
for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;
return buf;
}
}
文章来源: how to set formula for cell data for (export to .xlsx) SheetJS js-xlsx: https://github.com/SheetJS/js-xlsx