【发布时间】:2016-11-16 02:13:38
【问题描述】:
我想将我的 DataGrid 对象导出到 CSV 文件,并让用户可以选择查看 double 类型值的德语表示法。
foreach (DataGridViewRow dr in dataGridView1.Rows)
{
foreach (DataGridViewColumn column in dgv1)
{
double val;
if (double.TryParse(dr.Cells[column.Name].Value.ToString(), out val))
{
sw.Write(string.Format(System.Globalization.CultureInfo.GetCultureInfo("de-DE"), "{0:0.0}", val));
sw.Write(",");
}
}
}
sw 这里是一个新的StreamWriter 对象。
我为此使用了正确的区域性,但是当我看到结果时,我看到应该是“18,54”,是 18,在它旁边的单元格中有一个 5,然后通过点 (.)。我在这段代码中做错了什么?
【问题讨论】:
-
什么是
val?你在调试器中检查过它的值吗? -
¿您是在 Excel 中打开它吗?如果是这样,请尝试用分号而不是逗号分隔值。
-
@HimBromBeere 整个 string.Format 行返回 18,5(逗号)。 val 本身是 18.54(点)
-
更改 sw.Write(",");到 sw.Write(";");
-
请记住,如果您使用逗号作为分隔符和十进制表示法,您将会遇到问题。您需要使 CSV 使用不同于逗号的分隔符。否则 18,54 变为值 18 和 54!
标签: c# .net csv export-to-csv