在C#中如何使用OLEDB(无自动化)访问excel标题?

这是我的代码,我试图访问第一行,第一列

string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + fileName + @";Extended Properties=""Excel 8.0;HDR=NO;"""; string CreateCommand = "SELECT * FROM [Sheet1$]"; OleDbConnection conn = new OleDbConnection(connectionString); conn.Open(); OleDbCommand cmd = new OleDbCommand(CreateCommand, conn); // cmd.ExecuteNonQuery(); DbDataReader dr= cmd.ExecuteReader(); int i = 0; while (dr.Read()) { string ab = dr.GetValue(i).ToString(); MessageBox.Show(ab); i++; } 

你尝试过HDR = YES吗? 这就是告诉OLEDB提供者你有一个标题行。

http://connectionstrings.com/excel

我一直使用GetSchema的内置函数枚举表格和标题。 这真的很光滑,没有任何意义。 祝你好运!

 OleDbConnection xl = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=filename.xlsx;Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\""); xl.Open(); //Get columns DataTable dtColumns = xl.GetSchema("Columns", new string[] { null, null, sheetName, null }); List<string> columns = new List<string>(); foreach (DataRow dr in dtColumns.Rows) columns.Add(dr[3].ToString()); xl.Close(); 

你不想设置HDR =否?

告诉OLEDB提供者,第一行包含标题将导致提供者使用标题作为字段的名称。 (我正在考虑将信息转储到数据表中,然后获得信息@ DataTable.Columns [“[HEADER]”]。Row ….)

由于您使用的是简单的数据读取器,并且希望将“标题”字段作为数据读取,请指定这些标题不是标题。

我有一个不同的问题,但能够访问Excel数据的第一行,并通过这个通过堆栈溢出发布的OleDBAdapter Excel QA删除它。

如果你正在尝试访问第一行,第一列,只是填充每个我提到的post数据集,并添加到底部:

  // DataSet: Object o = ds.Tables["xlsImport"].Rows[0]["LocationID"]; Object oa = ds.Tables["xlsImport"].Rows[0]["PartID"]; Object row0Col3 = ds.Tables["xlsImport"].Rows[0][3]; string valLocationID = o.ToString(); string valPartID = oa.ToString(); string rowZeroColumn3 = row0Col3.ToString(); 
 // CODE TO SET UP THE CONNECTION BETWEEN EXCEL AND VS2005 // IN EXTENDED PROPERTIES SET HDR = YES FOR READING FIRST ROW AND HEADERS. // IN EXTENDED PROPERTIES SET IMEX = 1 TO READ INTERMIXED DATA. excelCon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ExcelDBtrial.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"); excelCon.Open(); exDA = new OleDbDataAdapter("Select * from [Sheet1$]", excelCon); exDA.Fill(exDT); //CODE TO ADD TABLE HEADERS INTO THE HEADERS COMBOBOX foreach (DataColumn dc in exDT.Columns) headerCB.Items.Add(dc.ToString()); 
 string xlPath = @"D:\Temparary.xlsx"; //location of xlsx file string constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + xlPath + ";Extended Properties=\"Excel 12.0 Xml; HDR=YES; IMEX=1;\""; OleDbConnection con = new OleDbConnection(constr); OleDbCommand cmd = new OleDbCommand("select * from [Sheet1$]",con); con.Open(); OleDbDataReader dreader = cmd.ExecuteReader(); if (dreader.HasRows) { dreader.Read(); Label2.Text = dreader.GetValue(0).ToString(); } dreader.Close(); con.Close();