如何使用 node-excel-export 导出带有公式的 excel sheet?
How to export excel sheet with formula using node-excel-export?
我正在使用 node.js 中的 node-excel-export
模块将我的数据从数据库导出到 excel sheet.
这里的问题是,我希望 excel sheet 附带应用于特定单元格的公式。
站点中的文档没有清楚地演示公式的用法。
这是我试过的:
var XLSX = require('xlsx');
function getSheet(data, opts) {
var ws = {};
var range = {
s: {
c:0,
r:0
},
e: {
c:3,
r:3
}
};
for(var R = 0; R < 4; R++) {
for(var C = 0; C < 3; C++) {
var cell = {
v: data[R][C] ,
t: 'n'
};
var cell_ref = XLSX.utils.encode_cell({
c:C,
r:R
});
if(C == 2) {
cell_ref.f = "A"+R+"B"+R;
}
ws[cell_ref] = cell;
}
}
ws['!ref'] = XLSX.utils.encode_range(range);
return ws;
}
var data = [
[1, 2],
[3, 4],
[5, 6],
[7, 8]
];
function Workbook() {
if(!(this instanceof Workbook)) {
return new Workbook();
}
this.SheetNames = [];
this.Sheets = {};
}
var wb = new Workbook();
var wsName = "SheetJS";
wb.SheetNames.push(wsName);
wb.Sheets[wsName] = getSheet(data);
module.exports = {
dataset: [],
getExcelFile: function (resultset, res) {
/* write file */
XLSX.writeFile(wb, 'test.xlsx');
res.download('test.xlsx');
}
};
`
请帮忙。
找到正确的解决方案。
我犯了两个错误
cell_ref.f
的 1.Instead 使用 cell.f
。
2.Formula更正。
如果对其他人有帮助,请更新代码:
var XLSX = require('xlsx');
function getSheet(data, opts) {
var ws = {};
var range = {
s: {
c:0,
r:0
},
e: {
c:3,
r:3
}
};
for(var R = 0; R < 4; R++) {
for(var C = 0; C < 3; C++) {
var cell = {
v: data[R][C],
t: 'n'
};
var cell_ref = XLSX.utils.encode_cell({
c:C,
r:R
});
if(C == 2) {
cell.f = "A"+ (R+1) +"+B" + (R+1);
}
ws[cell_ref] = cell;
}
}
ws['!ref'] = XLSX.utils.encode_range(range);
return ws;
}
var data = [
[1, 2],
[3, 4],
[5, 6],
[7, 8]
];
function Workbook() {
if(!(this instanceof Workbook)) {
return new Workbook();
}
this.SheetNames = [];
this.Sheets = {};
}
var wb = new Workbook();
var wsName = "SheetJS";
wb.SheetNames.push(wsName);
wb.Sheets[wsName] = getSheet(data);
module.exports = {
dataset: [],
getExcelFile: function (resultset, res) {
/* write file */
XLSX.writeFile(wb, 'test.xlsx');
res.download('test.xlsx');
}
};
我正在使用 node.js 中的 node-excel-export
模块将我的数据从数据库导出到 excel sheet.
这里的问题是,我希望 excel sheet 附带应用于特定单元格的公式。
站点中的文档没有清楚地演示公式的用法。
这是我试过的:
var XLSX = require('xlsx');
function getSheet(data, opts) {
var ws = {};
var range = {
s: {
c:0,
r:0
},
e: {
c:3,
r:3
}
};
for(var R = 0; R < 4; R++) {
for(var C = 0; C < 3; C++) {
var cell = {
v: data[R][C] ,
t: 'n'
};
var cell_ref = XLSX.utils.encode_cell({
c:C,
r:R
});
if(C == 2) {
cell_ref.f = "A"+R+"B"+R;
}
ws[cell_ref] = cell;
}
}
ws['!ref'] = XLSX.utils.encode_range(range);
return ws;
}
var data = [
[1, 2],
[3, 4],
[5, 6],
[7, 8]
];
function Workbook() {
if(!(this instanceof Workbook)) {
return new Workbook();
}
this.SheetNames = [];
this.Sheets = {};
}
var wb = new Workbook();
var wsName = "SheetJS";
wb.SheetNames.push(wsName);
wb.Sheets[wsName] = getSheet(data);
module.exports = {
dataset: [],
getExcelFile: function (resultset, res) {
/* write file */
XLSX.writeFile(wb, 'test.xlsx');
res.download('test.xlsx');
}
};
`
请帮忙。
找到正确的解决方案。
我犯了两个错误
cell_ref.f
的 1.Instead 使用 cell.f
。
2.Formula更正。
如果对其他人有帮助,请更新代码:
var XLSX = require('xlsx');
function getSheet(data, opts) {
var ws = {};
var range = {
s: {
c:0,
r:0
},
e: {
c:3,
r:3
}
};
for(var R = 0; R < 4; R++) {
for(var C = 0; C < 3; C++) {
var cell = {
v: data[R][C],
t: 'n'
};
var cell_ref = XLSX.utils.encode_cell({
c:C,
r:R
});
if(C == 2) {
cell.f = "A"+ (R+1) +"+B" + (R+1);
}
ws[cell_ref] = cell;
}
}
ws['!ref'] = XLSX.utils.encode_range(range);
return ws;
}
var data = [
[1, 2],
[3, 4],
[5, 6],
[7, 8]
];
function Workbook() {
if(!(this instanceof Workbook)) {
return new Workbook();
}
this.SheetNames = [];
this.Sheets = {};
}
var wb = new Workbook();
var wsName = "SheetJS";
wb.SheetNames.push(wsName);
wb.Sheets[wsName] = getSheet(data);
module.exports = {
dataset: [],
getExcelFile: function (resultset, res) {
/* write file */
XLSX.writeFile(wb, 'test.xlsx');
res.download('test.xlsx');
}
};