怎样在 EpPlus 中改变一个十进制数的格式?

7

我的办公室Excel的格式是法国格式(小数分隔符为点,千位分隔符为空格),我加载了一个包含法国格式小数的CSV文件的工作表:

我的代码:

var range = sheet.Cells["A3"].LoadFromText(new FileInfo(fileCSVFull), format, TableStyles.Medium27, true);
var numStyle = package.Workbook.Styles.CreateNamedStyle("TableNumber");
numStyle.Style.Numberformat.Format = "# ##0,00";

var tbl = sheet.Tables[0];
tbl.ShowTotal = true;
tbl.Columns[0].TotalsRowLabel = "Total";

tbl.Columns[1].TotalsRowFunction = RowFunctions.Sum;
tbl.Columns[1].DataCellStyleName = "TableNumber";
tbl.Columns[2].TotalsRowFunction = RowFunctions.Sum;
tbl.Columns[2].DataCellStyleName = "TableNumber";
tbl.Columns[3].TotalsRowFunction = RowFunctions.Sum;
tbl.Columns[3].DataCellStyleName = "TableNumber";

string numcell = "E4:E"+(3 + nbline); 
sheet.Cells[numcell].Formula = "B4*C4";
sheet.Cells[numcell].StyleName = "TableNumber";

sheet.View.ShowGridLines = false;
sheet.Calculate();
sheet.Cells[sheet.Dimension.Address].AutoFitColumns();

但是在 "sheet.Calculate();" 上出现了异常。如果我改变我的十进制数的格式,那么我的XLSX文件就会生成,但是当我打开Excel时,由于我的十进制格式不被法语版的Excel识别,我会遇到错误。


2
打开Excel并按照您想要的方式格式化单元格,然后右键单击该单元格,选择“格式单元格”选项,然后选择“自定义”选项。您将看到Excel期望的数字格式以获得所需的输出。 - Anthony
谢谢您的回答,但我每天都会生成50个文件,我不能要求我的客户每次都这样做!如何使用EPPLUS考虑到区域设置? - FredG
我是说可以这样做来确定Excel的法语版本为所需格式设置的数字格式文本,然后将该数字格式放入您的代码中。 - Anthony
这就是我尝试做的事情。我加载了一个以逗号作为小数分隔符的CSV文件(例如12 235,55),并指定Numberformat.Format = " # ## 0,00",但当执行语句(sheet.Calculate();)时,会抛出异常。 - FredG
1个回答

4

我遇到了类似的问题。在我的情况下,将格式字符串设置为"#,##0.00"就解决了问题。


1
我预期EPPlus在解释定制数字格式字符串时,不像Excel那样采用本地语言设置,而总是使用en-US语言环境。这意味着格式字符串应该使用,(逗号)作为千位分隔符,使用.(点)作为小数点。 - Kjell Rilbe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接