CSV与EPPlusparsing问题

我正在使用EPPlus来读取数据。 该数据由.xlsx.csv

当文件是.csv文件时,我使用LoadFromTextfunction。 但EPPlus决定它也必须parsing所有的值, 而不应该这样做

例如:

 Id;Double; 1;-3,88; ExcelTextFormat format = new ExcelTextFormat(); format.Delimiter = ';'; worksheet.Cells[1, 1].LoadFromText( "file", format ); 

结果是工作表中的-3,88值变为: -388 。 我发现这是因为EPPlus将-3,88视为一个数字,并将其parsing为默认文化InvariantCulture ,在这种情况下(类似于) us-US

我如何实现EPPlus加载csv而不parsing? (将所有值作为string)

EPPlus似乎总是使用en-US格式parsing导入的数据。 因此,首先将十进制值的列作为string导入。 这样就没有企图转换。

 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); }