Получить имя столбца из таблицы Excel - PullRequest
1 голос
/ 05 октября 2011

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

1 Ответ

4 голосов
/ 05 октября 2011

Включена ли в строку подключения HDR = ДА ?:

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-битных средах.

...