简体   繁体   English

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

[英]How to sum all values in column?

I'm using exceljs and i must sum all values from my column, how can i do this?我正在使用exceljs ,我必须对列中的所有值求和,我该怎么做?

at issue on github, i found one solution, but not work for me:在 github 问题上,我找到了一种解决方案,但对我不起作用:

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

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

can somebody tell me how to sum each values from column?有人可以告诉我如何对列中的每个值求和吗?

Ciao, try to modify your code like this: Ciao,试着像这样修改你的代码:

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

Im a bit late im adding this for anyone who came across the same issue.我有点晚了,我为遇到同样问题的任何人添加了这个。

  1. point number one your array object values must be of type number not string.第一个点您的数组 object 值必须是数字类型而不是字符串。 I created a method to do that for me which is convertStringToNumber(data);我为我创建了一个方法,即 convertStringToNumber(data);

Example 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}]

Code代码

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; } 

Output Output 在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM