我在我的应用程序上使用此代码将datagridview导出为csv文件。它工作正常,但csv没有正确显示单元格值。请参阅下面的图像,我也粘贴了我的代码。我可以更改此代码以修复此?
这是datagridview
这是导出的csv,它显示如下
这是我的代码
public void writeCSV(DataGridView gridIn, string outputFile)
{
//test to see if the DataGridView has any rows
if (gridIn.RowCount > 0)
{
string value = "";
DataGridViewRow dr = new DataGridViewRow();
StreamWriter swOut = new StreamWriter(outputFile);
//write header rows to csv
for (int i = 0; i <= gridIn.Columns.Count - 1; i++)
{
if (i > 0)
{
swOut.Write(",");
}
swOut.Write(gridIn.Columns[i].HeaderText);
}
swOut.WriteLine();
//write DataGridView rows to csv
for (int j = 0; j <= gridIn.Rows.Count - 2; j++)
{
if (j > 0)
{
swOut.WriteLine();
}
dr = gridIn.Rows[j];
for (int i = 0; i <= gridIn.Columns.Count - 1; i++)
{
if (i > 0)
{
swOut.Write(",");
}
value = dr.Cells[i].Value.ToString();
//replace comma's with spaces
value = value.Replace(',', ' ');
//replace embedded newlines with spaces
value = value.Replace(Environment.NewLine, " ");
swOut.Write(value);
}
}
swOut.Close();
}
}
答案 0 :(得分:4)
您需要设置StreamWriter的编码:
StreamWriter swOut = new StreamWriter(outputFile, System.Text.Encoding.UTF8);
例如UTF-8。
在Excel中显示的数字5.027E + 13。您可以将单元格的文本格式更改为数字,excel将显示该值。或者在记事本中打开csv文件,你会看到数字是正确的。
答案 1 :(得分:0)
将数据导出到csv文件时需要设置正确的文本编码,例如System.Text.Encoding.UTF8
答案 2 :(得分:0)
StreamWriter swOut = new StreamWriter(outputFile, System.Text.Encoding.UTF8);