Member 12962919 Ответов: 1

Как получить данные excel, если я не знаю названия листа?


Я хочу загрузить данные excel, но не знаю названия листа.

Что я уже пробовал:

OleDbConnection connection = null;

try
{
    string excelConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes'", path);
    connection = new OleDbConnection();
    connection.ConnectionString = excelConnectionString;
    OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", connection);
    connection.Open();
    DbDataReader dr = command.ExecuteReader();
    DataTable table = new DataTable("Customers");
    table.Load(dr);

Karthik_Mahalingam

обратитесь к этому C# - Получение Имен Листов Книги Excel.[^] чтобы получить имя листа и итерацию из него.

1 Ответов

Рейтинг:
1

OriginalGriff

Получите имена листов, и вы можете найти его оттуда: Метод oledbconnection.Метода GetOleDbSchemaTable (Идентификатор GUID Объекта[]) (Система.Данных.Для oledb)[^] - пример MS provide извлекает все имена листов.


Member 12962919

Я использовал это, но это дает мне ошибку в запросе
вот код

OleDbConnection connection = null;

пробовать
{
string excelConnectionString = строка.Формат("Поставщик=Майкрософт.Туз.Oledb для.12.0;Источник данных={0};расширенные свойства='программы Excel 8.0;HDR съемка=Да'", путь);
соединение = новое OleDbConnection();
соединение.Параметр connectionString = excelConnectionString;
соединение.Открыть();
DataTable table = новый DataTable("клиенты");
таблица = соединение.GetOleDbSchemaTable(OleDbSchemaGuid.Таблицы, null);
String[] excelSheets = новая строка[table.Rows.Рассчитывать];
int i = 0;

// Добавьте имя листа в строковый массив.
foreach (строка DataRow в таблице.Строки)
{
excelSheets[i] = строка["TABLE_NAME"].Метод toString();
я++;
}
string Sheet = excelSheets[1];

string query = "select * from" + Sheet;
OleDbCommand command = new OleDbCommand(запрос, соединение);

DbDataReader dr = команда.Метода executereader();

стол.Нагрузка(dr);

OriginalGriff

И вы использовали отладчик, чтобы посмотреть, что именно происходит?
Что он тебе показал?

Member 12962919

Проблема запроса решена,но она добавляет некоторые дополнительные столбцы в таблицу,такие как Table_catalog, table_schema, table type