我正在尝试使用 Jet.Oledb 将excel文件导入数据表。这是我的代码:
string sourceConstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + HttpContext.Current.Server.MapPath("~/" + fileName) + "';Extended Properties='Excel 8.0;HDR=No;IMEX=1'";
OleDbConnection con = new OleDbConnection(sourceConstr);
OleDbCommand oleDbCmd = new OleDbCommand();
con.Open();
oleDbCmd.Connection = con;
DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string firstExcelSheetName=dt.Rows[0][2].ToString();
string query = "select * from [" + firstExcelSheetName + "]";
OleDbDataAdapter data = new OleDbDataAdapter(query, con);
data.TableMappings.Add("Table", "dtExcel");
data.Fill(dtExcel);
在excel文件中,第一行具有列名。但是我的数据表得到(f1,f2,f3,...)列名作为第一行的excel文件的第一行。所以我猜我必须告诉第一行包含columnName。但我怎么能实现呢?
答案 0 :(得分:4)
答案 1 :(得分:1)
如下所示,在连接字符串中只有一点变化,例如在您的情况下为sourceConstr。
HDR=Yes
而不是
HDR=No
改变后,它将是
string sourceConstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + HttpContext.Current.Server.MapPath("~/" + fileName) + "';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";