Ottenere un nome di colonna dal foglio di lavoro di excel

In C#, come faccio a ottenere il nome della colonna da un foglio di lavoro in un file di Excel?

Ecco il mio codice:

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

OriginaleL’autore C N | 2011-10-05

One Reply
  1. 4

    Non è la stringa di connessione includono il HDR=YES ?:

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

    Una volta popolare il DataSet o DataTable è possibile trattare nel modo consueto:

    dt.Columns[0].ColumnName

    O:

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

    Anche questa non sembra la sintassi corretta:

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

    Dovrebbe essere qualcosa di simile:

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

    Infine, se avete tempo, indagare EPPlus (open source) per la lettura/scrittura di Excel – http://epplus.codeplex.com come funziona in entrambe 32-bit e 64-bit ambienti.

    Che funziona. Grazie!

    OriginaleL’autore Kris Krause

Lascia un commento