将xlsx转换为csv不适用于特定文件,但适用于所有其他文件

时间:2013-01-22 07:01:13

标签: c# csv

这是我正在使用的方法:

http://www.c-sharpcorner.com/uploadfile/yuanwang200409/how-to-convert-xls-file-into-csv-file-in-C-Sharp/

它适用于所有其他文件,但是对于这个文件,它只有一列,即使它有六列。该文件是xlsx(Excell 2007)。但我不认为这是问题所在。

当我手动转换文件时,它可以正常工作。

2 个答案:

答案 0 :(得分:0)

这应该很容易调试。问题的关键在于此代码中的某个地方:

for (int x = 0; x < dt.Rows.Count; x++)
{
    string rowString = "";
    for (int y = 0; y < dt.Columns.Count; y++)
    {
        rowString += "\"" + dt.Rows[x][y].ToString() + "\",";
    }
    wrtr.WriteLine(rowString);
}

我会逐步找出rowString在每次通过时的价值。 dt.Columns.Count调用是否会返回值为1?在调试器窗口中打开dt并在那里查看它。它有多个列吗?等等你应该能够分开这些循环正在做什么并找到问题。

让我们知道您的发现。

答案 1 :(得分:0)

问题是excel文件的第一行没有标题。我不知道为什么,但是一旦我为标题添加了额外的行 - 它就被修复了。