如何动态获取多个列的总和?

时间:2019-02-05 14:45:32

标签: c# excel datatable sum

我有一堆基于另一个字段动态创建的列,这些列根据ID在不同的位置包含1。我想对每一列求和并将其总计放在底部。

我将数据存储在数据表中,并将其写入Excel文件中。

我尝试过根据行创建一个excel范围,然后求和,但是它不起作用。

Excel.Range formatRange3 = (Excel.Range)xlsNewSheet.Range[xlsNewSheet.Cells[2, 6], xlsNewSheet.Cells[rw, 6]].Cells; (Range of rows in one column) 

xlsNewSheet.Cells[rw + 1, 6] = "=sum(" + formatRange3 + " )";

我在行结果=SUM(System.__ComObject)中得到了这个,所以我猜不可能这样做。

是否可以对数据表中的列进行求和,然后将结果放入列表中,然后可以将其写入excel工作表中?

1 个答案:

答案 0 :(得分:1)

问题是,您正在将函数构建为字符串并尝试传递Excel.Range对象,该对象将调用ToString(),而该对象最终只会为您提供类型名称(在这种情况下,{ {1}}。

您需要获取范围的地址,为此您要使用范围Address方法。例如:

System.__ComObject

如果您正在使用现代版本的C#,则可以使用字符串插值使其更具可读性:

xlsNewSheet.Cells[rw + 1, 6] = "=sum(" + formatRange3.Address + " )";