我在C#应用程序中使用此代码使用EPPlus生成Excel文件,一切正常,我将应用程序发送到客户端,他说它显示错误的数字。在他寄给我的Excel文件中,数字确实不同。无法弄清楚原因。我怀疑Excel是罪魁祸首,因区域设置或类似的东西而不同地解释数字。我怎样才能解决这个问题? 例如,20在另一台PC上变为2000:
Decimal.TryParse(dataGridView1.Rows[e.RowIndex].Cells[15].Value.ToString().Replace(".", ","), out number); //cell value 20.00
ws.Cells["I33"].Value = number;
ws.Cells["I33"].Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;
ws.Cells["I33"].Style.Numberformat.Format = "0.00"; //becomes 20,00
结果:
答案 0 :(得分:1)
这是一个小例子:
string decimalStr1 = "123,34";
string decimalStr2 = "123.34";
decimal number1, number2 = 0m;
decimal.TryParse(decimalStr1.Replace(",", "."), NumberStyles.AllowDecimalPoint,
CultureInfo.InvariantCulture, out number1);
decimal.TryParse(decimalStr2.Replace(",", "."), NumberStyles.AllowDecimalPoint,
CultureInfo.InvariantCulture, out number2);
// number1 = number2 = 123.34
重要的是使用'。'作为分隔符和CultureInfo.InvariantCulture
。 Ant然后在解析之后(您确定该值是正确的)您可以将分隔符更改回',':
ws.Cells["I33"].Value = number1.ToString().Replace('.', ',');