如何对列中的所有值求和?

How to sum all values in column?

我正在使用 exceljs,我必须对我的列中的所有值求和,我该怎么做?

关于 github 的问题,我找到了一个解决方案,但对我不起作用:

workSheet.getCell(`B${endRow}`).value = { formula: `SUM(B4:B${endRow-1})` };

因为vscode 扔给我:Type '{ formula: string; }' is not assignable to type 'CellValue'. Type '{ formula: string; }' is missing the following properties from type 'CellSharedFormulaValue': sharedFormula, date1904

有人能告诉我如何对列中的每个值求和吗?

再见,试着像这样修改你的代码:

workSheet.getCell(`B${endRow}`).value = { formula: `SUM(B4:B${endRow-1})`, date1904: false };

我为遇到相同问题的任何人添加这个有点晚了。

  1. 第一点你的数组对象值必须是数字类型而不是字符串。 我创建了一个方法来为我做这件事,它是 convertStringToNumber(data);

示例数据

     [{ItemPrice: 69.99, name: "Kellogs Cornflakes", brand: "Kellogs", Quantity_Purchased: 2, QaunititySaleValue: 139.98}, {ItemPrice: 19.99, name: "Castle Lite", brand: "Castle", Quantity_Purchased: 2, QaunititySaleValue: 39.98}]

代码

async createExcel(data, fileName) {

let xlsData = this.convertStringToNumber(data);
const fs = require('fs')

const workbook = new Excel.Workbook();
const worksheet = workbook.addWorksheet(fileName);

worksheet.columns = [
  { header: 'name', key: 'name', width: 10 },
  { header: 'brand', key: 'brand', width: 32 },
  { header: 'Quantity_Purchased', key: 'Quantity_Purchased', width: 15, },
  { header: 'ItemPrice', key: 'ItemPrice', width: 15, },
  { header: 'QaunititySaleValue', key: 'QaunititySaleValue', width: 15, }
];

worksheet.addRows(xlsData);

const endRow = worksheet.lastRow._number + 1;

worksheet.getCell(`C${endRow}`).value = { formula: `SUM(C2:C${endRow - 1})` };
worksheet.getCell(`D${endRow}`).value = { formula: `SUM(D2:D${endRow - 1})` };
worksheet.getCell(`E${endRow}`).value = { formula: `SUM(E2:E${endRow - 1})` };
// save under export.xlsx
let buffResult = await workbook.xlsx.writeBuffer();

fs.writeFileSync(fileName + ".xlsx", buffResult); }

 convertStringToNumber(objects) {
  for (var i = 0; i < objects.length; i++) {
   var obj = objects[i];
  for (var prop in obj) {
    if (obj.hasOwnProperty(prop) && obj[prop] !== null && !isNaN(obj[prop])) {
      obj[prop] = +obj[prop];
    }
  }
}
return objects; } 

输出