将数据导出到csv文件设置值到不正确的单元格

时间:2014-12-01 13:07:27

标签: c# csv datagridview export-to-excel

我使用下一个代码将datagridView中的数据导出到xls文件中。

private void ToCsV(DataGridView dGv, string filename)
{
    var stOutput = "";
    // Export titles:
    var sHeaders = "";

    for (var j = 0; j < dGv.Columns.Count; j++)
        sHeaders = sHeaders + Convert.ToString(dGv.Columns[j].HeaderText) + "\t";

    stOutput += sHeaders + "\r\n";
    // Export data.
    for (var i = 0; i < dGv.RowCount - 1; i++)
    {
        var stLine = "";
        for (var j = 0; j < dGv.Rows[i].Cells.Count; j++)
        stLine = stLine + Convert.ToString(dGv.Rows[i].Cells[j].Value) + "\t";

        stOutput += stLine + "\r\n";
    }

    var utf16 = Encoding.GetEncoding(1254);
    byte[] output = utf16.GetBytes(stOutput);
    var fs = new FileStream(filename, FileMode.Create);
    var bw = new BinaryWriter(fs);
    bw.Write(output, 0, output.Length); //write the encoded file
    bw.Flush();
    bw.Close();
    fs.Close();
}  

结果我得到了&#34;坏&#34;格式化文件:

xls-file

我不知道为什么文件内容是这样的(有些文字不在右栏中)。有什么建议吗?感谢。


是否可能,因为单元格的某些文本有&#34; newLine&#34; \n

1 个答案:

答案 0 :(得分:0)

使用双引号将所有值(或至少是潜在问题的值)括起来。而不是123\n"123\n"放入csv文件中。

在csv文件中使用小数点分隔符时,大多数情况下会遇到此问题,如解释here。您的\n案例看起来很相似。