Запрос Excel лист в C # - PullRequest
3 голосов
/ 22 июля 2011

Я хочу прочитать файл Excel в c #, используя следующий код

string excelFileName = "Book2.xls";
string excelConnectString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Book2.xls;Extended Properties=""Excel 8.0;HDR=YES;""";
//string excelConnectString = @"Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " + excelFileName + ";" + "Extended Properties = Excel 8.0; HDR=Yes;IMEX=1";

OleDbConnection objConn = new OleDbConnection(excelConnectString);
OleDbCommand objCmd = new OleDbCommand("Select * From [Sheet1$]", objConn);

OleDbDataAdapter objDatAdap = new OleDbDataAdapter();
objDatAdap.SelectCommand = objCmd;
DataSet ds = new DataSet();
objDatAdap.Fill(ds);

enter image description here

Все работает нормально. Теперь мое требование - прочитать файл Excel, как показано ниже

SELECT A,B,D From [Sheet1];

Ответы [ 3 ]

5 голосов
/ 22 июля 2011

Команда выбора должна выглядеть следующим образом, если вы хотите прочитать от A1 до D1:

SELECT * FROM [SHEETNAME_HERE$A1:D1]

Весь код:

OleDbConnection con = new OleDbConnection(
    "provider=Microsoft.Jet.OLEDB.4.0;data source="
    + XLS_FILE_NAME_AND_PATH_HERE
    + ";Extended Properties=Excel 8.0;");

StringBuilder stbQuery = new StringBuilder();
stbQuery.Append("SELECT * FROM [" + SHEETNAME_HERE + "$A1:D1]");
OleDbDataAdapter adp = new OleDbDataAdapter(stbQuery.ToString(), con);

DataSet dsXLS = new DataSet();
adp.Fill(dsXLS);

DataView dvEmp = new DataView(dsXLS.Tables[0]);

dataGridView1.DataSource = dvEmp;
3 голосов
/ 22 июля 2011
DataTable Contents = new DataTable();
using (OleDbDataAdapter adapter = new OleDbDataAdapter("Select * From [Sheet1$]", objConn))
{
    adapter.Fill(Contents);
}
Console.WriteLine(Contents.Rows[0][0]);

Вы можете выбрать конкретную ячейку, передав соответствующий индекс.

2 голосов
/ 22 июля 2011

Вы можете просто составить запрос на использование следующим образом:

SELECT FirstName, LastName, Mobile FROM [Sheet1$]

, т.е. использовать значения первой строки в качестве имен столбцов.

...