CSV与EPPlus解析问题
我正在使用EPPlus来读取数据。 该数据由.xlsx
或.csv
。
当文件是.csv
文件时,我使用LoadFromText
功能。 但EPPlus决定它也必须解析所有的值, 而不应该这样做 。
例如:
Id;Double;
1;-3,88;
ExcelTextFormat format = new ExcelTextFormat();
format.Delimiter = ';';
worksheet.Cells[1, 1].LoadFromText( "file", format );
结果是工作表中的-3,88
值变为: -388
。 我发现这是因为EPPlus将-3,88视为一个数字,并将其解析为一个默认文化为InvariantCulture
,在这种情况下(类似于) us-US
。
我如何实现EPPlus加载csv而不解析? (将所有值作为字符串)
EPPlus似乎总是使用en-US
格式解析导入的数据。 因此,首先将十进制值的列作为字符串导入。 这种方式没有尝试转换。
ExcelTextFormat format = new ExcelTextFormat
{
Delimiter = ';',
DataTypes = new eDataTypes[] { eDataTypes.Number, eDataTypes.String }
};
并且在为您的本地化导入了正确的小数点分隔符后,值循环,将它们转换为十进制并设置正确的数字格式。
int columnNumber = 2;
for (int i = 2; i <= rowCount; i++)
{
worksheet.Cells[i, columnNumber].Style.Numberformat.Format = "0.00";
worksheet.Cells[i, columnNumber].Value = Convert.ToDecimal(worksheet.Cells[i, columnNumber].Value);
}
链接地址: http://www.djcxy.com/p/72033.html