首页 文章

公式不用EPPLUS计算

提问于
浏览
0

我想将 Datatable 转移到Excel并计算总和 . 为此,我正在使用epplus . 这是我的代码:

Sheet.Cells["A1"].LoadFromDataTable(dsExcel.Tables[0], true, TableStyles.Medium9);
Sheet.Cells[Sheet.Dimension.Address].AutoFitColumns();
Sheet.View.FreezePanes(3, 3);

int totalCols = Sheet.Dimension.End.Column;
int letztezeile = Sheet.Dimension.End.Row;
var range = Sheet.Cells[1, 1, 1, totalCols];

for (int i = 3; i < totalCols; i++)
{
   if (range[1, i].Value.ToString().Contains("Durchfluss")) Sheet.Column(i).Style.Numberformat.Format = "#,##0.00";
 }

 Sheet.InsertRow(2, 1);
 Sheet.Cells["A2"].Value = "Summe";
 for (int i = 4; i <= totalCols; i++)
 {
     Sheet.Cells[2, i, 2, i].Formula = "SUMME(" + range[3, i].Address + ":" + range[letztezeile + 1, i].Address + ")";
 }

这是我的输出:

enter image description here

我必须输入单元格D2并按Enter,然后公式正在运行:

enter image description here

那么我必须改变这个公式从一开始就有用吗?谢谢

2 回答

  • 0

    您应该将“SUMME”更改为“SUM”,本地化的公式名称由Excel GUI处理 . 底层xml(与Excel生成的相同)假设公式名称为英文 .

    来自EPPlus Formula calc文档:

    • 不要使用本地化的函数名称 . 仅支持英文名称(例如SUM,IF,VLOOKUP等) .

    • 不要在函数参数之间使用分号作为分隔符 . 仅支持逗号 .

    • 不要在公式中添加leading =符号 . "=SUM(A1:A2)"错了,"SUM(A1:A2)"是正确的

  • 2

    经过长时间搜索后,如果我使用 .LoadFromDataTable 并将每个值写为 stringepplus 似乎忽略了数据类型 . 所以我必须将每个值解析为double并将其写回单元格 . 之后一切都运行良好 .

    double ZahlAlsText;
            for (int i = 2; i < totalCols; i++) 'columns
            {
                for (int y = 2; y <= letztezeile + 1; y++) 'rows
                {
                    ZahlAlsText = double.Parse(range[y, i].Value.ToString());
                    range[y, i].Style.Numberformat.Format = "#,##0.00";
                    range[y, i].Value = ZahlAlsText;
                }
            }
    

相关问题