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

上一篇: CSV with EPPlus parsing issues

下一篇: EPPlus AddPicture 100% size