Внешняя таблица не имеет предполагаемый формат excel

Обновлено: 07.07.2024

23 ответа

Возможный Дубликат : Excel “External table is not in the expected format.” То, что я делаю, - это получаю все имена таблиц и вставляю их в список. Это мой код: public List<string> GetEditExcelSheets(string fileName, out OleDbException Error) < List<string> Result = new.

Я создаю небольшое приложение для импорта данных excel в мою базу данных, когда я нажимаю кнопку, она выходит из строя с ошибкой Внешняя таблица находится не в ожидаемом формате. Я пробовал гуглить и менять коды здесь и там, но проблема все равно возникает. Я попытался сохранить файл как .xls, и.

"External table is not in the expected format." обычно возникает при попытке использовать файл Excel 2007 со строкой подключения, которая использует: Microsoft.Jet.OLEDB.4.0 и расширенные свойства=Excel 8.0

Использование следующей строки подключения, по-видимому, устраняет большинство проблем.

Спасибо за этот код :) я очень ценю его. Работает на меня.

Поэтому, если у вас есть diff версия файла Excel, получите имя файла, если его расширение .xlsx, используйте это:

и если это .xls, используйте:

(У меня слишком низкая репутация, чтобы комментировать, но это комментарий к записи JoshCaba, использующей движок Ace вместо реактивного двигателя для Excel 2007)

Это относится и к Excel 2010 году.

Я пытаюсь извлечь данные из общего диска , не открывая файл. Я использовал ADO , чтобы легко манипулировать результирующей таблицей, так как мне просто нужны определенные поля. Вместо того чтобы выполнять процедуру фильтрации и копирования, ADO предпочтительнее, так как я могу использовать запрос.

Мой код: OdbcConnection conn = new OdbcConnection(); conn.ConnectionString =Driver=;Driverid=277;Dbq=D:\\DBF\\; conn.Open(); OdbcCommand oCmd = conn.CreateCommand(); DataTable dt = new DataTable(); dt.Load(oCmd.ExecuteReader()); conn.Close();.

Просто добавьте мое дело. Мой xls-файл был создан функцией экспорта данных с веб-сайта, расширение файла-xls, обычно его можно открыть с помощью MS Excel 2003. Но и Microsoft.Jet.OLEDB.4.0, и Microsoft.ACE.OLEDB.12.0 получили исключение "External table is not in the expected format".

Наконец, проблема заключается в том, что, как и было сказано в исключении, "it's not in the expected format". Хотя это расширение называется xls, Но когда я открываю его с помощью текстового редактора, на самом деле это хорошо сформированный файл html, все данные находятся в <table>,, каждый <tr>-это строка, а каждый <td>-ячейка. Тогда я думаю, что смогу разобрать его на html.

У меня была та же проблема. который как решается с помощью этих шагов:

1.) Нажмите Кнопку Файл

2.) Выберите "save as"

3.) Нажмите на выпадающий список (Сохранить как тип)

enter image description here

4.) Выберите Книгу Excel 97-2003

enter image description here

5.) Нажмите на кнопку Сохранить

enter image description here

У меня была такая же проблема(с использованием ACE.OLEDB), и то, что решило ее для меня, было этой ссылкой:

Суть его заключается в том, что установка нескольких версий office и различных office sdk, сборок и т. д. это привело к тому, что ссылка ACEOleDB.dll в реестре указывала на папку OFFICE12 вместо OFFICE14 в

C:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL

Кроме того, вы можете изменить раздел реестра, изменив путь dll, чтобы он соответствовал вашей версии Access.

Access 2007 должен использовать OFFICE12, Access 2010-OFFICE14 и Access 2013-OFFICE15

(OS: 64bit Office: 64bit) или (OS: 32bit Office: 32bit)

Ключ: HKCR\CLSID\InprocServer32\

Имя Значения: (По Умолчанию)

Значение Данных: C:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL

(OS: 64bit Office: 32bit)

Ключ: HKCR\Wow6432Node\CLSID\InprocServer32\

Имя Значения: (По Умолчанию)

Значение Данных: C:\Program Файлов (x86)\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL

Я также видел эту ошибку при попытке использовать сложные формулы INDIRECT() на импортируемом листе. Я заметил это, потому что это была единственная разница между двумя рабочими книгами, где одна импортировала, а другая нет. Оба были файлами 2007+ .XLSX, и был установлен движок 12.0.

Я подтвердил, что это была проблема.:

  • Создание копии файла (все еще была проблема, так что это не было какой-то разницей сохранения)
  • Выделение всех ячеек листа с помощью косвенных формул
  • Вставка только в виде значений

и ошибка исчезла.

Я получал ошибки с третьей стороной и Oledb чтением книги XLSX. Проблема, по-видимому, заключается в скрытом рабочем листе, который вызывает ошибку. Раскрытие рабочего листа позволило импортировать рабочую книгу.

Если файл доступен только для чтения, просто удалите его, и он снова должен работать.

Этот адрес файла excel может иметь неправильное расширение. Вы можете изменить расширение с xls на xlsx или наоборот и попробовать еще раз.

Столкнулся с той же проблемой и нашел эту тему. Ни одно из приведенных выше предложений не помогло, за исключением комментария @Smith's к принятому ответу 17 апреля 13 года.

Предыстория моей проблемы достаточно близка к @zhiyazw's-в основном попытка установить экспортированный файл Excel (в моем случае SSRS) в качестве источника данных в пакете dtsx. Все, что я сделал, немного повозившись, это переименовал рабочий лист. Он не должен быть строчным, как предлагал @Smith.

Я предполагаю, что ACE OLEDB ожидает, что файл Excel будет следовать определенной структуре XML, но каким-то образом Службы Reporting Services не знают об этом.

Вместо OleDb вы можете использовать Excel Interop и открыть рабочий лист только для чтения.

файл может быть заблокирован другим процессом, вам нужно скопировать его, а затем загрузить, как сказано в этом посте

Рекомендуется сохранить как Excel 2003

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

Надеюсь, это вам поможет.

Ace поддерживает все предыдущие версии Office

Этот код хорошо работает!

Это может произойти, если книга защищена паролем. Есть некоторые обходные пути, чтобы удалить эту защиту, но большинство примеров, которые вы найдете в интернете, устарели. В любом случае, простое решение состоит в том, чтобы снять защиту книги вручную, в противном случае используйте что-то вроде OpenXML, чтобы удалить защиту программно.

Работая с каким-то более старым кодом, я наткнулся на то же самое общее исключение. Очень трудно отследить эту проблему, поэтому я решил добавить сюда, если это поможет кому-то еще.

В моем случае в другом месте проекта был код, который открывал StreamReader в файле Excel до того, как OleDbConnection попытался открыть файл (это было сделано в базовом классе).

Таким образом, в основном мне просто нужно было сначала вызвать Close() на объекте StreamReader, а затем я мог бы успешно открыть соединение OleDb. Это не имело никакого отношения ни к самому файлу Excel, ни к строке OleDbConnection (естественно, именно туда я и смотрел в первую очередь).

Моя область действия состоит из загрузки шаблона и проверяет шаблон, когда он заполнен данными Так,

1) Загрузите файл шаблона (. xlsx) со строкой заголовка. файл генерируется с помощью openxml , и он отлично работает.

2) Загрузите тот же файл без каких-либо изменений из его загруженного состояния. Это приведет к ошибке подключения и сбою (OLEDB соединение используется для чтения листа excel).

Здесь, если данные заполнены, программа работает так, как ожидалось.

У кого-нибудь есть идея, что проблема связана с файлом, который мы создаем, он находится в формате xml, если мы откроем его и просто сохраним, преобразуем его в формат excel, и он хорошо работает.

Есть идеи скачать excel с предпочтительным типом файла?

Похожие вопросы:

Я пытаюсь использовать SqlBulkCopy в соответствии с примером импорта данных электронной таблицы Excel в таблицу базы данных SQL Server с использованием SqlBulkCopy . Я создал таблицу и Excel лист OK.

Я использую приведенный ниже код для импорта файла dbf. Но я получаю ошибку: Внешняя таблица не находится в ожидаемом формате if (ofdDBF.ShowDialog()==DialogResult.OK) < string connStr =.

Я уже некоторое время использую LinqToExcel для разбора документа exel, и вдруг он перестал работать. Я получаю следующую ошибку: Внешняя таблица находится не в ожидаемом формате. Есть идеи, почему.

Возможный Дубликат : Excel “External table is not in the expected format.” То, что я делаю, - это получаю все имена таблиц и вставляю их в список. Это мой код: public List<string>.

Я создаю небольшое приложение для импорта данных excel в мою базу данных, когда я нажимаю кнопку, она выходит из строя с ошибкой Внешняя таблица находится не в ожидаемом формате. Я пробовал гуглить.

Я пытаюсь извлечь данные из общего диска , не открывая файл. Я использовал ADO , чтобы легко манипулировать результирующей таблицей, так как мне просто нужны определенные поля. Вместо того чтобы.

Мой код: OdbcConnection conn = new OdbcConnection(); conn.ConnectionString =Driver=;Driverid=277;Dbq=D:\\DBF\\; conn.Open(); OdbcCommand oCmd = conn.CreateCommand();.

Необработанное исключение типа ' System.Data.OleDb.OleDbException ' произошло в System.Data.dll Дополнительная информация: внешняя таблица находится не в ожидаемом формате. private void.

У меня странная проблема, я получаю файл excel (.xls) с веб-сайта, а затем выставляю данные как JSON, все работает файл с фиктивным документом, пока я не начал тестирование с реальными данными, если.


  • FWIW Я получил это на листе Excel, когда пытался открыть его, я использовал текущий ACE и предлагаемые расширенные свойства. Когда я вручную открыл файл, вверху было это приглашение для включения редактирования, мне нужно разобраться, как автоматически перевернуть этот бит, но если вы получаете это, вам может просто нужно открыть файл, а затем включить редактирование . Я могу посмотреть, смогу ли я открыть файл только для чтения, я видел кое-что очень далеко в этой ветке об этом.

Использование следующей строки подключения, похоже, решает большинство проблем.

Спасибо за этот код :) Я очень ценю это. Работает на меня.

Итак, если у вас есть различная версия файла Excel, получите имя файла, если его расширение .xlsx, использовать этот:

и если это .xls, используйте:

  • 5 FYI: это вызовет исключение OleDbException, если вы попытаетесь открыть файл на ПК, на котором нет Jet На нем установил OleDb.
  • @Trex, вы уверены, что ваша последняя строка кода верна? Можешь еще раз перепроверить в каком-нибудь редакторе?

(У меня слишком низкая репутация, чтобы комментировать, но это комментарий к записи JoshCaba, использующей Ace-engine вместо Jet для Excel 2007)

Это также применимо к Excel 2010.

Просто добавь мой случай. Мой файл xls был создан функцией экспорта данных с веб-сайта, расширение файла - xls, его можно нормально открыть в MS Excel 2003. Но и Microsoft.Jet.OLEDB.4.0, и Microsoft.ACE.OLEDB.12.0 получили отметку " Внешняя таблица не соответствует "исключению ожидаемого формата".

У меня такая же проблема. которые разрешены с помощью следующих шагов:

1.) Щелкните Файл

3.) Щелкните раскрывающийся список (Сохранить как тип).


4.) Выберите книгу Excel 97-2003.



  • 1 Бу! Возврат к устаревшему формату файла даже не должен рассматриваться. На момент ответа формату 97-2003 было 16 лет и он устарел на 12 лет. Я мог понять несколько лет, но устаревание более чем на десять лет не должно говорить профессиональному разработчику о том, что формат файла должен быть старше.

У меня была такая же проблема (с использованием ACE.OLEDB), и для меня ее решила эта ссылка:

Суть в том, что установка нескольких офисных версий и различных офисных SDK, сборок и т. Д. Привела к тому, что в реестре ссылка ACEOleDB.dll указывала на папку OFFICE12 вместо OFFICE14 в

C: \ Program Files \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL

Кроме того, вы можете изменить раздел реестра, изменив путь к dll в соответствии с вашей версией Access.

Access 2007 должен использовать OFFICE12, Access 2010 - OFFICE14 и Access 2013 - OFFICE15.

(ОС: 64-разрядная, офисная: 64-разрядная) или (ОС: 32-разрядная, офисная: 32-разрядная)

Ключ: HKCR \ CLSID \ InprocServer32 \

Имя значения: (по умолчанию)

Данные значения: C: \ Program Files \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL

(ОС: 64-битная, Офисная: 32-битная)

Ключ: HKCR \ Wow6432Node \ CLSID \ InprocServer32 \

Имя значения: (по умолчанию)

Данные значения: C: \ Program Files (x86) \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL

Я также видел эту ошибку при попытке использовать сложные формулы INDIRECT () на листе, который импортируется. Я заметил это, потому что это была единственная разница между двумя книгами, одна из которых импортировала, а другая - нет. Оба были файлами 2007+ .XLSX, и был установлен движок 12.0.

Я подтвердил, что это проблема:

  • Создание копии файла (проблема все еще была, так что не было никакой разницы в сохранении как)
  • Выбор всех ячеек на листе с помощью косвенных формул
  • Вставка только как значения

и ошибка исчезла.

У меня возникали ошибки при чтении книги XLSX третьей стороной и Oledb. Проблема заключается в скрытом листе, который вызывает ошибку. Отображение рабочего листа позволило импортировать книгу.

Если файл доступен только для чтения, просто удалите его, и он снова заработает.

Заглянул в ту же проблему и нашел эту ветку. Ни одно из приведенных выше предложений не помогло, за исключением комментария @ Smith к принятому ответу 17 апреля 2013 года.

Предыстория моей проблемы достаточно близка к проблеме @ zhiyazw - в основном я пытаюсь установить экспортированный файл Excel (в моем случае SSRS) в качестве источника данных в пакете dtsx. Все, что я сделал, после некоторой возни с этим, переименовал рабочий лист. Это не обязательно должно быть в нижнем регистре, как предложил @Smith.

Я предполагаю, что ACE OLEDB ожидает, что файл Excel будет следовать определенной структуре XML, но каким-то образом службы Reporting Services не знают об этом.

Этот адрес файла Excel может иметь неправильное расширение. Вы можете изменить расширение с xls на xlsx или наоборот и повторить попытку.

файл может быть заблокирован другим процессом, вам нужно скопировать его, а затем загрузить, как говорится в этом после

Рекомендуется сохранить как Excel 2003

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

Надеюсь, это вам поможет.

Вместо OleDb вы можете использовать Excel Interop и открывать лист только для чтения.

  • 5 Взаимодействие с Excel не рекомендуется для работы с Excel. Это может вызвать множество проблем, поэтому не рекомендуется.
  • Хотя это старый пост, я согласен с MaxOvrdrv, использование взаимодействия - не лучшая идея, и его следует избегать, хотя бы по той причине, что для этого требуется полная установка Excel на сервере.
  • Вы не должны этого делать.

Ace поддерживает все предыдущие версии Office

Этот код работает хорошо!

  • 1 Это не так. Проблема все еще может возникнуть, я еще не выяснил, почему, поскольку все мои файлы из Excel 2007, и некоторые из них работают, некоторые - нет.
  • У вас есть источник для этого утверждения? Сам не знаю, просто интересно. :-)

Это может произойти, если книга защищена паролем. Есть несколько обходных путей для снятия этой защиты, но большинство примеров, которые вы найдете в Интернете, устарели. В любом случае, простое решение - снять защиту книги вручную, в противном случае используйте что-то вроде OpenXML для программного удаления защиты.

Моя область действия состоит из загрузки шаблона и проверки шаблона, когда он заполнен данными Итак,

1) Загрузите файл шаблона (.xlsx) со строкой заголовка. файл создается с использованием openxml и он работает отлично.

2) Загрузите тот же файл без каких-либо изменений из загруженного состояния. Это приведет к ошибке подключения и отказу (соединение OLEDB используется для чтения листа Excel).

Здесь, если данные заполнены, программа работает как положено.

Любой, у кого есть идея, что проблема связана с файлом, в котором мы ее создаем. xml format, если мы откроем его и просто сохраним, преобразуем его в формат Excel, и он работает хорошо.

Есть идеи загрузить Excel с предпочитаемым типом файла?

  • Вы не должны задавать вопросы в своих ответах, если вам нужны ответы на ваш вопрос, задавайте их при необходимости отдельно.

Работая с некоторым более старым кодом, я обнаружил то же общее исключение. Очень сложно отследить проблему, поэтому я подумал, что добавлю сюда, если это поможет кому-то другому.

В моем случае в другом месте проекта был код, открывающий StreamReader в файле Excel. перед OleDbConnection попытался открыть файл (это было сделано в базовом классе).

Итак, в основном мне просто нужно было сначала позвонить в объект StreamReader, а затем я смог успешно открыть соединение OleDb. Это не имело ничего общего ни с самим файлом Excel, ни со строкой OleDbConnection (которую я, естественно, сначала искал).

"внешняя таблица не в ожидаемом формате."обычно происходит при попытке использовать файл Excel 2007 со строкой подключения, использующей: Microsoft.Реактивный.Oledb для.4.0 и расширенные свойства=Excel 8.0

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

Спасибо за этот код :) я действительно ценю это. Работать на меня.

поэтому, если у вас есть diff версия файла Excel, получите имя файла, если его расширение .XLSX-файл используйте этот:

и если это .в XLS использовать:

(У меня слишком низкая репутация, чтобы комментировать, но это комментарий к записи JoshCaba, используя Ace-engine вместо Jet для Excel 2007)

Это относится и к Excel 2010.

просто добавляйте свое дело. Мой файл xls был создан функцией экспорта данных с веб-сайта, расширение файла xls, он может быть нормально открыт MS Excel 2003. Но и Microsoft.Реактивный.Oledb для.4.0 и Microsoft.ТУЗ.Oledb для.12.0 получено исключение" внешняя таблица не в ожидаемом формате".

наконец, проблема в том, что, как сказано в исключении, "это не в ожидаемом формате". Хотя это имя расширения-xls, Но когда я открываю его с помощью текстового редактора, это на самом деле хорошо сформированный html-файл, все данные находятся в

, каждый является строкой, а каждый
- ячейкой. Тогда я думаю, что могу разобрать его в html-формате.

У меня была такая же проблема(используя ACE.OLEDB) и что разрешило это для меня была эта ссылка:

суть в том, что установка нескольких версий office и различных Office sdk, сборок и т. д. привел к Ацеоледбу.ссылка dll в реестре, указывающая на папку OFFICE12 вместо OFFICE14 в

C:\Program Файлы\Общие Файлы\Microsoft Общий\OFFICE14\ACEOLEDB.Dll файлы

кроме того, вы можете изменить раздел реестра, изменив путь dll в соответствии с версией Access.

Access 2007 должен использовать OFFICE12, Access 2010-OFFICE14 и Access 2013-OFFICE15

(ОС: 64-битный офис: 64bit) или (ОС: 32-битный офис: 32бит)

ключ: HKCR\CLSID\InprocServer32\

Имя Значения: (По Умолчанию)

Значение Данных: C:\Program Файлы\Общие Файлы\Microsoft Общий\OFFICE14\ACEOLEDB.Dll файлы

(OS: 64bit офис: 32bit)

ключ: HKCR\Wow6432Node\CLSID\InprocServer32\

Имя Значения: (По Умолчанию)

значение данных: C:\Program файлы (x86)\Общие файлы\Microsoft Общий\OFFICE14\ACEOLEDB.Dll файлы

Я также видел эту ошибку при попытке использовать сложные косвенные () формулы на импортируемом листе. Я заметил это, потому что это была единственная разница между двумя книгами, где один импортировал, а другой нет. Оба были 2007+ .XLSX файлы, и 12.0 двигатель был установлен.

Я подтвердил, что это была проблема:

  • создание копии файла (все еще была проблема, так что это не было какой-то сохранить-как разница)
  • опции все ячейки в листе с косвенными формулами
  • вставка только как значения

и ошибка исчезла.

Я получал ошибки со сторонним и Oledb чтением книги XLSX. Проблема, как представляется, скрытый лист, который вызывает ошибку. Отображение листа позволило импортировать книгу.

вместо OleDb вы можете использовать взаимодействие Excel и открыть лист только для чтения.

файл может быть заблокирован другим процессом, вам нужно скопировать его, а затем загрузить его, как он говорит, в это в должности

рекомендация сохранить как Excel 2003

Если у вас все еще есть эта проблема, то проверьте свои разрешения, я пробовал многие из этих предложений, и моя конкретная проблема заключалась в том, что файл, который я хотел обработать, находился под контролем источника, и поток не имел разрешений, мне пришлось изменить все разрешения папки, и он начал работать (я обрабатывал много файлов там). Он также соответствует многим предложениям, таким как изменить имя файла или проверить, что файл не loicked другим процессом.

Я надеюсь, что это помочь тебе.

Ace поддерживает все предыдущие версии Office

этот код работает хорошо!

Это может произойти, если книга защищена паролем. Существуют некоторые обходные пути для удаления этой защиты, но большинство примеров, которые вы найдете в интернете, устарели. В любом случае простое решение-снять защиту книги вручную, иначе используйте что-то вроде OpenXML для программного удаления защиты.

столкнулся с той же проблемой и нашел этот поток. Ни одно из предложений выше не помогло, за исключением комментария @Smith к принятому ответу 17 апреля ' 13.

фон моей проблемы достаточно близок к @zhiyazw - в основном пытается установить экспортированный файл Excel (SSRS в моем случае) в качестве источника данных в пакете dtsx. Все, что я сделал, немного повозившись, это переименовал рабочий лист. Он не должен быть строчным, как предложил @Smith.

Я полагаю, туз OLEDB ожидает, что файл Excel будет следовать определенной структуре XML, но каким-то образом Службы Reporting Services об этом не знают.

этот адрес файла excel может иметь неправильное расширение. Вы можете изменить расширение с xls на xlsx или наоборот и повторить попытку.

24 ответа

«Внешняя таблица не в ожидаемом формате». обычно возникает при попытке использовать файл Excel 2007 со строкой подключения, в которой используются: Microsoft.Jet.OLEDB.4.0 и Extended Properties = Excel 8.0.

Похоже, что использование следующей строки подключения решает большинство проблем.

Спасибо за этот код :) Я очень ценю это. Работает для меня.

Итак, если у вас есть различная версия файла Excel, получите имя файла, если его расширение - .xlsx , используйте это:

И если это .xls , используйте:

(У меня слишком низкая репутация, чтобы комментировать, но это комментарий к записи JoshCaba, использующей Ace-engine вместо Jet для Excel 2007)

Это также применимо к Excel 2010.

Просто добавь мой случай. Мой файл xls был создан функцией экспорта данных с веб-сайта, расширение файла - xls, его обычно можно открыть с помощью MS Excel 2003. Но и Microsoft.Jet.OLEDB.4.0, и Microsoft.ACE.OLEDB.12.0 получили отметку " Внешняя таблица не соответствует "исключению ожидаемого формата".

У меня была такая же проблема (с использованием ACE.OLEDB), и для меня ее решила эта ссылка:

Суть в том, что установка нескольких офисных версий и различных офисных SDK, сборок и т. Д. Привела к тому, что в реестре ссылка ACEOleDB.dll указывала на папку OFFICE12 вместо OFFICE14 в

C: \ Program Files \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL

Кроме того, вы можете изменить раздел реестра, изменив путь к dll в соответствии с вашей версией Access.

Access 2007 должен использовать OFFICE12, Access 2010 - OFFICE14 и Access 2013 - OFFICE15.

(ОС: 64-разрядная, офисная: 64-разрядная) или (ОС: 32-разрядная, офисная: 32-разрядная)

Ключ: HKCR \ CLSID \ InprocServer32 \

Имя значения: (по умолчанию)

Данные значения: C: \ Program Files \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL

(ОС: 64-разрядная, Офис: 32-разрядная)

Ключ: HKCR \ Wow6432Node \ CLSID \ InprocServer32 \

Имя значения: (по умолчанию)

Данные значения: C: \ Program Files (x86) \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL

У меня такая же проблема. которые разрешены с помощью следующих шагов:

1.) Нажмите "Файл" .

2.) Выберите «Сохранить как» .

3.) Щелкните раскрывающееся меню (Сохранить как тип) .

enter image description here

4.) Выберите книгу Excel 97–2003 .

enter image description here

enter image description here

Я также видел эту ошибку при попытке использовать сложные формулы INDIRECT () на импортируемом листе. Я заметил это, потому что это была единственная разница между двумя книгами, одна из которых импортировала, а другая - нет. Оба были файлами 2007+ .XLSX, и был установлен движок 12.0.

Я подтвердил, что это проблема:

  • Создание копии файла (проблема все еще была, так что не было никакой разницы в сохранении как)
  • Выбор всех ячеек на листе с помощью косвенных формул
  • Вставка только как значения

И ошибка исчезла.

У меня возникали ошибки при чтении книги XLSX третьей стороной и Oledb. Проблема заключается в скрытом листе, который вызывает ошибку. Отображение рабочего листа позволило импортировать книгу.

Если файл доступен только для чтения, просто удалите его, и он снова заработает.

Заглянул в ту же проблему и нашел эту ветку. Ни одно из приведенных выше предложений не помогло, за исключением комментария @ Smith к принятому ответу 17 апреля 2013 года.

Предыстория моей проблемы достаточно близка к проблеме @ zhiyazw - в основном я пытаюсь установить экспортированный файл Excel (в моем случае SSRS) в качестве источника данных в пакете dtsx. Все, что я сделал, после некоторого времени, переименовал рабочий лист. Это не обязательно должно быть в нижнем регистре, как предложил @Smith.

Я полагаю, ACE OLEDB ожидает, что файл Excel будет следовать определенной структуре XML, но каким-то образом службы Reporting Services не знают об этом.

Я знаю, что это очень старый пост, но я тоже могу поделиться своим мнением о том, как мне удалось решить эту проблему.

Я также использую Microsoft.ACE.OLEDB.12.0 в качестве провайдера. Когда мой код попытался прочитать файл XLSX, он получил ошибку «Внешняя таблица не в ожидаемом формате». Однако, когда я оставил файл открытым в Excel, а затем код попытался его прочитать . это сработало.

РЕШЕНИЕ: Я использую Office 365 с документами компании, и в моем случае решение было очень простым, мне просто нужно было отключить конфиденциальность документа, установив для него значение «общедоступный». Подробно: Даже после сохранения как «общедоступное» зеленая галочка все еще оставалась отмеченной «Внутреннее использование», но после этого проблема осталась решенной.

enter image description here

Файл может быть заблокирован другим процессом, вам нужно скопировать его, а затем загрузить, как указано в этом post

Рекомендуется сохранить как Excel 2003.

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

Надеюсь, это вам поможет.

Вместо OleDb вы можете использовать Excel Interop и открыть лист только для чтения.

Ace поддерживает все предыдущие версии Office

Этот код работает хорошо!

Это может произойти, если книга защищена паролем. Есть несколько обходных путей для снятия этой защиты, но большинство примеров, которые вы найдете в Интернете, устарели. В любом случае, простое решение - снять защиту книги вручную или использовать что-то вроде OpenXML для программного удаления защиты.

Этот адрес файла Excel может иметь неправильное расширение. Вы можете изменить расширение с xls на xlsx или наоборот и повторить попытку.

Моя область действия состоит из загрузки шаблона и проверки шаблона, когда он заполнен данными Итак,

1) Загрузите файл шаблона (.xlsx) со строкой заголовка. файл создается с использованием openxml и работает отлично.

2) Загрузите тот же файл без каких-либо изменений из загруженного состояния. Это вызовет ошибку подключения и сбой (соединение OLEDB используется для чтения листа Excel).

Здесь, если данные заполнены, программа работает как положено.

Любой, у кого есть идея, что проблема связана с файлом, который мы создаем, в формате xml , если мы откроем его и просто сохраним, преобразуем его в формат Excel, и он будет хорошо работать.

Есть идеи загрузить Excel с предпочитаемым типом файла?

Работая с некоторым старым кодом, я обнаружил то же самое общее исключение. Очень сложно отследить проблему, поэтому я подумал, что добавлю сюда, если это поможет кому-то другому.

В моем случае в другом месте проекта был код, который открывал StreamReader в файле Excel до , когда OleDbConnection попытался открыть файл (это было сделано в базовом классе).

Так что в основном мне просто нужно было сначала вызвать Close() объекта StreamReader, после чего я смогу успешно открыть соединение OleDb. Это не имело ничего общего ни с самим файлом Excel, ни со строкой OleDbConnection (которую я, естественно, сначала искал).

на "Внешняя таблица не в ожидаемом формате.&я, как правило, возникает при попытке использовать файл Excel 2007 с помощью строки подключения, который использует Майкрософт.Самолет.Oledb для.4.0 и расширенные свойства=в Excel 8.0

Спасибо за код :) я действительно ценю это. Работает для меня.

Так что если у вас есть дифф версия файла Excel, получить имя файла, если ее расширение .файлы XLSX используйте этот:

и если это .файл XLS используйте:

Он применяется для Excel 2010, а также.

Просто добавьте мой случай. Мой xls файл был создан с помощью функции экспорта данных с сайта, расширение этого файла-xls-файл, он может быть нормально открыт в Excel 2003. Но и Microsoft.Самолет.Oledb для.4.0 и Microsoft.Туз.Oledb для.12.0 у собой "Внешняя таблица не в ожидаемом формате" не исключение.

У меня была эта же проблема(с помощью туза.Для oledb) и что решена она для меня была эта ссылка:

C:\Program файлы\Common папку Shared\OFFICE14\ACEOLEDB.DLL

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

доступ к 2007 должны использовать OFFICE12, доступ к 2010 - office14 и доступ к В 2013 - OFFICE15

(ОС: 64-битный офис: 64bit) или (ОС: 32-битный офис: 32бит)

ключ: раздел hkcr\идентификатором CLSID\InprocServer32\

имя значение: (по умолчанию)

значение: C:\Program файлы\Common папку Shared\OFFICE14\ACEOLEDB.DLL

(ОС: 64-битный офис: 32бит)

ключ: В разделе hkcr\Wow6432Node\идентификатором CLSID\InprocServer32\

имя значение: (по умолчанию)

значение данных: файлов C:\Program (х86) Общие файлы\Майкрософт Shared\OFFICE14\ACEOLEDB.DLL

Я подтвердил это был вопрос:

и ошибка исчезла.

Я получаю ошибки с третьей партии и oledb чтения XLSX книги. Появляется вопрос Скрытого Листа, что приводит к ошибке. Отображение рабочего листа включена в книгу для импорта.

У меня была та же проблема. который, как решены с помощью этих шагов:

1.) Нажмите Файл

2.) Выбрать и"Сохранить как"

3.) Нажмите на выпадающее (Сохранить как тип)

Введите описание изображения здесь

4.) Выберите Книга Excel 97-2003

Введите описание изображения здесь

5.) Нажмите на кнопку Сохранить

Введите описание изображения здесь

Я предполагаю, что туз данных oledb ожидает файл Excel придерживаться определенного XML-структуру, но как-то служб отчетов не известно.

Что адрес файла Excel может иметь неверное расширение. Вы можете изменить расширение с XLS в XLSX или наоборот и попробуйте снова.

Если файл только для чтения, просто удалите его и он должен работать снова.

Вместо oledb, которые можно использовать в Excel Interop и откройте лист только для чтения.

В моем случае, там был код в другом месте в проекте, открывая поток streamreader на Excel файл перед метод oledbconnection пытались открыть файл (это было сделано в базовом классе).

Так что в принципе мне просто нужно было назвать `закрыть () на объект streamreader, во-первых, тогда я мог бы открыть успешно oledb подключение. Это никак не связано с файлом в формате Excel сам, или со строкой подключения oledbconnection (который, естественно, куда я смотрю в первую очередь).

Читайте также: