c# - 从 excel 工作表中获取列名称

标签 c# excel oledb

在 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/

相关文章:

c# - 集线器上的停止方法不会触发 onDisconnect

c# - 如何强制 C# Task 对于​​给定 ID 一次仅存在一次

vba - Excel VBA 将 .csv 转换为 Excel 文件

c++ - 带有 DBTIMESTAMP 变量的 DDX_Text,我需要引用哪个库?

带参数 OLEDB 源的 SQL 命令文本

sql-server - 从 Sql Server 2008 R2 连接到 IBM i 服务器

c# - 管理 EntityConnection 生命周期

c# - WNetAddConnection2 和错误 1219 - 自动断开连接?

vba - 子未定义错误: Calling a Macro in Another Sheet

vba - Excel通过VBA清除保护/取消保护工作表上的剪贴板,但在使用UI完成时保留它,即审查->保护/取消保护?