【问题标题】:How do I get the sum of multiple columns dynamically?如何动态获取多列的总和?
【发布时间】:2019-02-05 14:45:32
【问题描述】:

我有大量基于另一个字段动态创建的列,这些列根据 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 工作表?

【问题讨论】:

    标签: c# excel datatable sum


    【解决方案1】:

    问题是您将函数构建为字符串并尝试传入Excel.Range 对象,该对象将调用ToString(),最终只为您提供类型名称(在本例中为System.__ComObject)。

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

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

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

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

    【讨论】:

    • 非常感谢。那行得通。我无法使用 'formateRange3.Address()' 但 'formateRange3.Address'
    猜你喜欢
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    • 2022-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    相关资源
    最近更新 更多