Я пытаюсь прочитать данные из файла excel. Полный код ниже. Первые несколько строк являются нежелательными, поэтому пропустите их, используя следующие
"SELECT * From [" + SheetName + "] WHERE [F3] <> ''";
Я хочу прочитать код в формате datatable и все еще держать заголовки. которые появляются после мусорных строк.
Проблема в том, что когда я фильтрую наши мусорные строки, используя предложение WHERE выше, заголовки столбцов данных выглядят как F1, F2 и т.д.
В моей строке подключения я указываю, что я хочу, чтобы заголовки
HDR = Yes.
Если я удалю предложение WHERE из SELECT, он работает так, как я ожидаю.
пожалуйста, порекомендуйте
switch (Extension)
{
case ".xls": //Excel 97-03
conStr = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
break;
case ".xlsx": //Excel 07
conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
break;
}
conStr = String.Format(conStr, FilePath, "Yes");
OleDbConnection connExcel = new OleDbConnection(conStr);
OleDbCommand cmdExcel = new OleDbCommand();
OleDbDataAdapter oda = new OleDbDataAdapter();
DataTable dt = new DataTable();
cmdExcel.Connection = connExcel;
//Get the name of First Sheet
connExcel.Open();
DataTable dtExcelSchema;
dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string SheetName = ListSheets.SelectedValue;
connExcel.Close();
//Read Data from First Sheet
connExcel.Open();
cmdExcel.CommandText = "SELECT * From [" + SheetName + "] WHERE [F3] <> ''";
oda.SelectCommand = cmdExcel;
oda.Fill(dt);
connExcel.Close();
Предполагая, что у вас есть фиксированные строки нежелательного кода в листе Excel, вы можете выполнить такой запрос.
"SELECT * From [Sheet1$A5:C]"
Предполагается, что ваши заголовки находятся в строке 5, а C - столбец, где заканчиваются ваши данные. Это правильно загружает имена заголовков для столбцов.
Добавление моментального снимка Excel, с которым работает указанный выше запрос.