导入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将所有数字存储为双精度,然后仅应用格式。因此,当格式设置为"General"时,1.0将显示为1,因为excel删除了末尾的。0作为其"解释"。
您确定使用的是cell.Text
吗?或者你实际上是用cell.Value
来解释你所看到的。如果它们在excel中是真正的数字(而不是存储为文本的数字),那么.Text
将返回一个字符串(例如:"1")表示.Value
(例如1.0,这是1将如何存储)后,excel已经应用了它的样式"通用"。
因此,如果您确信它将始终是整型,则可以简单地将。value转换为整型或。text并进行解析。如果你不是那么自信,那么你将不得不在循环中测试每个值,并寻找模数的缺失。