从excel工作表中获取列名称 [英] Get column name from excel worksheet

查看:408
本文介绍了从excel工作表中获取列名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在C#中,如何从Excel文件中的工作表中获取列名?



这是我的代码到目前为止:

  ConnectionString = string。格式(Provider = Microsoft.ACE.OLEDB.12.0; Data Source = {0};扩展属性= \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;扩展属性=Excel 12.0 Xml; HDR = YES; 
/ pre>

一旦你填充你的DataTable或DataSet,你可以对待他通常的方式:

  dt.Columns [0] .ColumnName 

或者:

  //对于每个DataTable,打印ColumnName 。 
foreach(dataSet.Tables中的DataTable表)
{
foreach(table.Columns中的DataColumn列)
{
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位环境。


In C#, how do I get the column name from a worksheet in an Excel file?

Here is my code so far:

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();

解决方案

Does you connection string include the HDR=YES ?:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";

Once you populate your DataTable or DataSet you can treat the usual way:

dt.Columns[0].ColumnName

Or:

// For each DataTable, print the ColumnName.
foreach(DataTable table in dataSet.Tables)
{
    foreach(DataColumn column in table.Columns)
    {
        Console.WriteLine(column.ColumnName);
    }
}

Also this does not look syntax correct:

OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM ["xlWorksheet"$]", objConn); 

Should be something like:

OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [" + xlWorksheet + "$]", objConn); 

Finally, if you time - investigate EPPlus (open source) for reading/writing Excel - http://epplus.codeplex.com as it works in both 32-bit and 64-bit environments.

这篇关于从excel工作表中获取列名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆