c# OleDbConnection csv to excel跳过csv的第一行

本文关键字:csv 一行 OleDbConnection to excel 跳过 | 更新日期: 2023-09-27 18:05:20

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

c# OleDbConnection csv to excel跳过csv的第一行

它将跳过第一行标题,除非您使用:

Extended Properties=Text;HDR=No;

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

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

这个注释注意到当FULL PATH被传递到SELECT语句中时的相同行为。由于该文件的目录已在OleDbConnection中提供,因此不需要再次提供。

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

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

还发现,当HDR=YES时,您可以使用table.Columns[0]获取第一列。