Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将xlsx转换为csv不适用于特定文件,但适用于所有其他文件_C#_Csv - Fatal编程技术网

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

C# 将xlsx转换为csv不适用于特定文件,但适用于所有其他文件,c#,csv,C#,Csv,这是我正在使用的方法: http://www.c-sharpcorner.com/uploadfile/yuanwang200409/how-to-convert-xls-file-into-csv-file-in-C-Sharp/ 它适用于所有其他文件,但对于这个文件,它只得到一列,即使它有六列。该文件是xlsx(Excel2007)。但我认为这不是问题所在 当我手动转换文件时,它工作正常。这应该很容易调试。问题的症结就在这段代码的某个地方: for (int x = 0; x < d

这是我正在使用的方法:

http://www.c-sharpcorner.com/uploadfile/yuanwang200409/how-to-convert-xls-file-into-csv-file-in-C-Sharp/
它适用于所有其他文件,但对于这个文件,它只得到一列,即使它有六列。该文件是xlsx(Excel2007)。但我认为这不是问题所在


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

这应该很容易调试。问题的症结就在这段代码的某个地方:

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);
}
for(int x=0;x
我会一步一步地找出每次传递时
rowString
的值是什么样子。
dt.Columns.Count
调用返回值是否为1?在调试器窗口中打开
dt
,并在那里查看它。它有多列吗?等等。你应该能够分辨出这些循环在做什么,并找到问题所在


请告诉我们您发现了什么。

问题是Excel文件;第一排没有标题。我不知道为什么,但有一次我为标题添加了一个额外的行-它是固定的。

dt.Columns.Count等于1。rowString具有第二列的值。我知道如何调试。我需要一个解决方案。那么,你是说数据表只返回一列?您的问题是:“为什么
OleDbCommand
SELECT
只返回一列?”是的,为什么返回一列以及如何修复它?