在 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();
最佳答案
您的连接字符串是否包含HDR=YES?:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";
填充数据表或数据集后,您可以按照通常的方式处理:
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);
最后,如果您有时间 - 研究用于读/写 Excel 的 EPPlus(开源)- http://epplus.codeplex.com因为它适用于 32 位和 64 位 环境。
关于c# - 从 excel 工作表中获取列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7662882/