anuj___chauhan Ответов: 2

Внешняя таблица не в ожидаемом формате


Я пытаюсь прочитать файл Excel (.xlsx), используя код, показанный ниже.Ошибка есть.... Внешняя таблица находится не в ожидаемом формате.

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

DataTable dtData = new DataTable();
        OleDbConnection oOleDbConnection;
        OleDbDataAdapter oOleDbDataAdapter;
        try
        {
            oOleDbConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 12.0';");
            oOleDbDataAdapter = new OleDbDataAdapter("select * from [sheet1$]", oOleDbConnection);
            oOleDbDataAdapter.Fill(dtData);
            oOleDbConnection.Close();
            oOleDbConnection.Dispose();
            return dtData;
        }
        catch (Exception ex)
        {
            return null;
        }




Не могли бы вы сказать мне, где я ошибся?.

Maciej Los

1. Кажется, вы забыли открыть соединение.
2. Как вы создаете и инициируете path переменная?

anuj___chauhan

тот же код работает с форматом .xls, Но не работает с форматом .xlsx

Gerry Schmitz

Тогда это формат или поставщик / драйвер, а не код.

2 Ответов

Рейтинг:
0

Maciej Los

Пожалуйста, сначала прочтите мой комментарий.

1. Вы забыли открыть соединение:

oOleDbConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 12.0';");
oOleDbConnection.Open(); //you missed that!
oOleDbDataAdapter = new OleDbDataAdapter("select * from [sheet1$]", oOleDbConnection);


2. А path переменная должна быть инициирована таким образом:
string path = @"C:\Folder1\Foder2\FileName.xlsx";
//or - without @
//note: single [\] is an escape character, so you need to pass two [\\] to change its meaning
string path = "C:\\Folder1\\Foder2\\FileName.xlsx";


3. Проверьте, если sheet1 существует в коллекции листов!

4. Используйте определенную строку подключения для каждого файла Excel (в зависимости от расширения):
Видеть: Строки подключения Microsoft ACE OLEDB 12.0 - ConnectionStrings.com[^]
Для файлов xlsx:
string constr = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0 Xml';", path);