Excel «Внешняя таблица не находится в ожидаемом формате».
Я пытаюсь прочитать файл Excel (xlsx), используя приведенный ниже код. Я получаю «Внешняя таблица не в ожидаемом формате». если я не открываю файл в Excel. Другими словами, я должен сначала открыть файл в Excel, прежде чем я смогу прочитать, если из моей программы на С#. Файл xlsx находится в общей папке в нашей сети. Как я могу прочитать файл, не открывая его первым? Благодаря
20 ответов
«Внешняя таблица не в ожидаемом формате». обычно возникает при попытке использовать файл Excel 2007 со строкой подключения, которая использует: Microsoft.Jet.OLEDB.4.0 и Extended Properties = Excel 8.0
Использование следующей строки подключения, по-видимому, устраняет большинство проблем.
Спасибо за этот код:) Я очень ценю это. Работает для меня.
Итак, если у вас есть diff-версия файла Excel, получите имя файла, если его расширение равно .xlsx, используйте это:
(У меня слишком низкая репутация, чтобы комментировать, но это комментарий к записи JoshCaba, используя Ace-engine вместо Jet for Excel 2007)
Если у вас нет Ace, установленного/зарегистрированного на вашем компьютере, вы можете получить его по адресу: http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en
Просто добавьте мой случай. Мой файл xls был создан функцией экспорта данных с веб-сайта, расширение файла — xls, его можно нормально открыть MS Excel 2003. Но и Microsoft.Jet.OLEDB.4.0, и Microsoft.ACE.OLEDB.12.0 получили » Внешняя таблица отсутствует в исключении ожидаемого формата.
У меня была эта же проблема (с использованием ACE.OLEDB), и для меня это была решена эта ссылка:
Суть его в том, что установка нескольких офисных версий и различных офисных sdk, сборок и т.д. привела к ссылке ACEOleDB.dll в реестре, указывающей на папку OFFICE12 вместо OFFICE14 в
Я получал ошибки с чтением третьей стороны и Oledb книги XLSX. Проблема заключается в скрытом листе, который вызывает ошибку. Отображение рабочей таблицы позволило импортировать книгу.
Я также видел эту ошибку при попытке использовать сложные формулы INDIRECT() на импортируемом листе. Я заметил это, потому что это была единственная разница между двумя книгами, в которых кто-то импортировал, а другой — нет. Оба были в 2007 +.XLSX файлах, а 12.0 был установлен.
Иди в эту же проблему и нашел эту тему. Ни одно из приведенных выше предложений не помогло, кроме комментария @Smith к принятому ответу 17 апреля 13.
Фон моей проблемы достаточно близок к @zhiyazw — в основном пытается установить экспортированный файл Excel (SSRS в моем случае) в качестве источника данных в пакете dtsx. Все, что я сделал, после некоторого возиться, переименовывало рабочий лист. Это не должно быть строчным, как предложил @Smith.
Я полагаю, что ACE OLEDB ожидает, что файл Excel будет следовать определенной структуре XML, но каким-то образом Reporting Services об этом не знает.
Вместо OleDb вы можете использовать Excel Interop и открыть рабочий лист как доступный только для чтения.
Этот адрес файла excel может иметь неправильное расширение. Вы можете изменить расширение с xls на xlsx или наоборот и повторите попытку.
У меня возникла эта проблема и изменение расширенных свойств на HTML Import зафиксировал ее как this сообщение от Marcus Miris:
ACE имеет свернутый JET
Ace Поддерживает все предыдущие версии Office
Я также имел эту ошибку в прошлом месяце в автоматизированном процессе. Код С# работал нормально, когда я запускал его отладку. Я обнаружил, что учетной записи службы, выполняющей код, также необходимы разрешения для папки C:\Windows\Temp.
Недавно я видел эту ошибку в контексте, который не соответствует ни одному из ранее указанных ответов. Это оказалось конфликтом с AutoVer. Временное решение: временно отключить AutoVer.
Это может произойти, когда рабочая книга защищена паролем. Есть некоторые способы обхода этой защиты, но большинство примеров, которые вы найдете в Интернете, устарели. В любом случае простым решением является снятие защиты с рабочей книги вручную, в противном случае используйте что-то вроде OpenXML для программной защиты программы.
Если файл только для чтения, просто удалите его, и он должен снова работать.
файл может быть заблокирован другим процессом, вам нужно скопировать его, а затем загрузить его, как он говорит в этом сообщении . strong >
Ошибки импорта из Excel и их решения.
Отметим, что в конструкции можно использовать любые данные текущей строки таблицы, а также результаты поиска по базе, что делает конструкцию CHECK значительно более мощной, чем ее аналог в описании домена.