从Excel工作表中获取列名称
在C#中,如何从Excel文件中的工作表中获取列名?
这是我的代码到目前为止:
ConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", "@"C:\file.xlsx"); objConn.Open(); OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM ["xlWorksheet"$]", objConn); OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(); objAdapter1.SelectCommand = objCmdSelect; DataSet objDataset1 = new DataSet(); objAdapter1.Fill(objDataset1); objConn.Close();
你连接的string是否包含HDR = YES ?
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";
一旦你填充你的DataTable或DataSet,你可以按照通常的方式处理:
dt.Columns[0].ColumnName
要么:
// For each DataTable, print the ColumnName. foreach(DataTable table in dataSet.Tables) { foreach(DataColumn column in table.Columns) { Console.WriteLine(column.ColumnName); } }
另外这看起来没有语法正确:
OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM ["xlWorksheet"$]", objConn);
应该是这样的:
OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [" + xlWorksheet + "$]", objConn);
最后,如果您有时间 – 调查EPPlus(开放源代码)读取/写入Excel – http://epplus.codeplex.com,因为它可以在32位和64位环境中使用。