Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.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# c OLEDB连接csv到excel跳过csv的第一行_C#_Excel_Csv_Oledb - Fatal编程技术网

C# c OLEDB连接csv到excel跳过csv的第一行

C# c OLEDB连接csv到excel跳过csv的第一行,c#,excel,csv,oledb,C#,Excel,Csv,Oledb,当出于某种原因使用此代码时,它会跳过csv文件的第一行,即标题。我做错了什么 string strFileName = path; OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + System.IO.Path.GetDirectoryName(strFileName) + "; Extended Properties =

当出于某种原因使用此代码时,它会跳过csv文件的第一行,即标题。我做错了什么

string strFileName = path;
                OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + System.IO.Path.GetDirectoryName(strFileName) + "; Extended Properties = \"Text\"");
                conn.Open();
                OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM " + System.IO.Path.GetFileName(strFileName), conn);
                DataSet ds = new DataSet("Temp");
                adapter.Fill(ds);
                DataTable tb = ds.Tables[0];
                string data = null;
                for (int j = 0; j <= tb.Rows.Count - 1; j++)
                {
                    for (int k = 0; k <= tb.Columns.Count - 1; k++)
                    {

                        data = tb.Rows[j].ItemArray[k].ToString();
                        SaturnAddIn.getInstance().Application.ActiveWorkbook.ActiveSheet.Cells[j + 1, k + 1] = data;
                    }
                }
在将完整路径传递到SELECT语句时注意到相同的行为。由于文件的目录是在OLEDB连接中提供的,因此无需再次提供

还有一些类似的注释表明路径也应该在连接中


它还建议使用真正的CSV解析器。

它将跳过头一行,除非您使用:

Extended Properties=Text;HDR=No;
但在这种情况下,它会将第一行视为数据行,这在某些阶段可能会导致数据类型错误


通常情况下,您会跳过第一行,并在Excel中手动创建标题。

还发现,当HDR=YES时,您可以使用table.Columns[0].ColumnName并使用某种循环来获取第一列。

我在过去的回答中使用过这种技术,并取得了很大成功。此外,该网站在过去为我设置并运行连接字符串提供了很大帮助:。这里有一个链接指向Jet OLE DB提供程序上的连接字符串:我忘了我有一个schemes.ini文件,它优先。