c#OleDbConnection CSV到excel从csv跳过第一行

当由于某种原因使用这段代码时,它会跳过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; } } 

它会跳过第一行标题,除非你使用:

 Extended Properties=Text;HDR=No; 

但在这种情况下,它会将第一行视为数据行,这可能(在某个阶段)导致数据types错误。

通常你会跳过第一行,并手动在Excel中创build标题。

当FULL PATH传入SELECT语句时, 此注释说明了相同的行为。 由于该文件的目录在OleDbConnection提供,因此不需要再次提供。

在这个答案(对另一个问题)有一些类似的注释,表明path也应该在连接中。

它还build议使用“真正的”CSVparsing器。

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