导入Excel数据的EPPlus应该是Int

本文关键字:Int EPPlus Excel 数据 导入 | 更新日期: 2023-09-27 18:07:47

我使用EPPlus将数据从Excel选项卡导入到DataTable中。Excel文件中的所有列都设置为"General"选项。

我有许多列,其中包含一个整数值(列仍然设置为"一般",但所有的值都是整数,即1,2,3等),但当我导入到一个DataTable我得到的值像1.00,2.00,3.00等

是否有EPPlus添加小数点的原因和/或我如何防止这种情况?

这是执行导入的代码块:

    int startRow = headerRow + 1;
    ExcelRange wsRow;
    DataRow dr;
    // if headerRow exists (headerRow > 0) then add columns with names
    foreach (var firstRowCell in ws.Cells[headerRow, 1, headerRow, totalCols])
    {
        dt.Columns.Add(headerRow > 0 ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column));
    }

    for (int rowNum = startRow; rowNum <= totalRows; rowNum++)
    {
        wsRow = ws.Cells[rowNum, 1, rowNum, totalCols];
        dr = dt.NewRow();
        foreach (var cell in wsRow)
        {
            dr[cell.Start.Column - 1] = cell.Text;
        }
        dt.Rows.Add(dr);
    }

导入Excel数据的EPPlus应该是Int

问题是excel将所有数字存储为双精度,然后仅应用格式。因此,当格式设置为"General"时,1.0将显示为1,因为excel删除了末尾的。0作为其"解释"。

您确定使用的是cell.Text吗?或者你实际上是用cell.Value来解释你所看到的。如果它们在excel中是真正的数字(而不是存储为文本的数字),那么.Text将返回一个字符串(例如:"1")表示.Value(例如1.0,这是1将如何存储)后,excel已经应用了它的样式"通用"。

因此,如果您确信它将始终是整型,则可以简单地将。value转换为整型或。text并进行解析。如果你不是那么自信,那么你将不得不在循环中测试每个值,并寻找模数的缺失。