AIDo4ka Пользователь Сообщений: 14 |
Здравствуйте! Подскажите, пожалуйста, при открытии файла Word со слиянием появляется ошибка «Произошла ошибка: внешняя таблица не имеет предполагаемый формат « Что делать? Заранее спасибо. |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
AIDo4ka, ознакомьтесь с нашими правилами, зайдите в свой профиль и поменяйте логин: сейчас он с нарушением Правил. |
Aido4ka Пользователь Сообщений: 14 |
#3 16.10.2016 00:09:49
Done. …а я то думала уже ответ подоспел .. ( |
||
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
#4 16.10.2016 00:17:48
Не вижу. И совсем необязательно меня цитировать — кнопка цитирования не для ответа. |
||
Aido4ka Пользователь Сообщений: 14 |
Радушный прием. |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
Я ещё в #2 пояснил: имя с нарушением наших Правил. Просто поменяйте его. |
Aido4ka Пользователь Сообщений: 14 |
Юрий, так я поменяла. Что еще не устраивает? Конкретизируйте. P.S.: довольно странная ситуация, что система позволяет создать ‘не соответствующий» логин. |
Aido4ka Пользователь Сообщений: 14 |
Впрочем даже то, что было, можно назвать нарушением правил с большой натяжкой и если очень придираться. Я в недоумении. |
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
#9 16.10.2016 18:59:27
Замените «Aido4ka» на, например, «Aidochka».
Ничто в этом мире не совершенно. Система уповает на сознательность входящего. <#0> |
||||
Aido4ka Пользователь Сообщений: 14 |
#10 16.10.2016 19:05:11
Серьезно? Звучит как прикол или издевательство.. |
||
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
Aido4ka, поступайте как знаете. Давал совет без издёвки. Я не помогаю пока не устраняют замечание модератора. <#0> |
StellaArt Пользователь Сообщений: 14 |
#12 16.10.2016 20:16:09
Мое возмущение не к вам относилось.) Модераторы, так нормально или опять не подходит? |
||
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
StellaArt, приложите пример (ворд+эксель), который у нас вызовет ту же ошибку. <#0> |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
#14 16.10.2016 20:21:55 Нормально. А для возмущения нет причин.
Посмотрите другие темы — разве люди не получают помощь? |
||
StellaArt Пользователь Сообщений: 14 |
Прикладываю. Я создавала заново и Word и Excel, эффект тот же самый (( А при открытом Excel работает. |
gling Пользователь Сообщений: 4024 |
Сохранил оба файла, открыл Word— попросил указать базу— указал файл Excel — Word открылся без ошибки. |
StellaArt Пользователь Сообщений: 14 |
И какой из этого вывод? |
JeyCi Пользователь Сообщений: 3357 |
#18 17.10.2016 16:09:33
выводы снова делать вам… у меня открывается, как у gling … что ждёте от форума excel в вашем Word? Слияние данных MS Excel и MS Word чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах) |
||
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
Можете приложить скрин ошибки и пошагово описать свои действия? У меня проблем тоже никаких не вызвали Ваши файлы. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
StellaArt Пользователь Сообщений: 14 |
Простите, очень большой файл. Выложила сюда https://yadi.sk/i/SplNx_04xW8Ky Изменено: StellaArt — 24.10.2016 21:00:16 |
bamini Пользователь Сообщений: 1 |
#21 28.04.2017 10:08:21 StellaArt, у меня тоже появлялось такое же сообщение. Всё дело оказалось в установленном пароле на открытие документа с базой данных. Именно поэтому, у Вас скорее всего ничего не появляется при открытом экселевском документе. |
Ошибка «внешняя таблица не имеет предполагаемый формат» генерируется на последней строчке представленного ниже кода, причем, если я открою предварительно файл в ms excel, то ошибка не происходит и я получаю доступ к данным в экселе. Как исправить эту ошибку?
C# | ||
|
Добавлено через 21 час 0 минут
Решил проблему поменяв строку подключения следующим образом:
C# | ||
|
02.10.11 — 16:23
Есть файл XLS, в нём 14к строк,при подключении к нему через ADO выдаёт ошибку «внешняя таблица не имеет предполагаемый формат», притом если создаю пустой файл XLS всё нормально подключается.
Код вот такой:
ADOСоединение = Новый COMОбъект («ADODB.Connection»);
ADOСоединение.ConnectionString = «Provider=Microsoft.Jet.OLEDB.4.0;Data Source=»+ФайлEXCEL+»;Extended Properties=»»Excel 8.0;HDR=yes;»»»;
ADOСоединение.Open();
Помогите разобраться, уже весь мозг себе взорвал.
1 — 02.10.11 — 16:27
(0) Заголовки у стобцов — есть? Данные в столбцах — однотипные?
2 — 02.10.11 — 16:47
типы разные, заголовки есть, в начале файла вообще вставлена картинка, удалил её руками, одна фигня
3 — 02.10.11 — 16:51
(0) Попробуй добавить в строке подключения в Extended Properties:
IMEX=1;
4 — 02.10.11 — 16:53
Пробовал, то же самое
5 — 02.10.11 — 16:57
(4) Может, помимо картинки, ещё какой-то мусор был?
Попробуй HDR=No;IMEX=1
(первую строку потом проигнорируешь).
6 — 02.10.11 — 17:01
А если значения (только значения) перенести в другой файл?
7 — 02.10.11 — 17:17
Не,без толку
8 — 02.10.11 — 17:17
мож ещё какой способ есть, просто загрузка будет регламентной на серваке, на котором нет excel???
9 — 02.10.11 — 17:23
(8) бугага
10 — 02.10.11 — 17:34
Amra от слова Mra???? )))
11 — 02.10.11 — 17:39
Ну что, больше нет вариантов чтоли??
12 — 02.10.11 — 17:40
только бугага видимо (9)
13 — 02.10.11 — 17:42
(11) Вариант есть — разобраться, что там со структурой таблицы.
14 — 02.10.11 — 17:45
Это да, только и не знаю даже куда копать(13)
15 — 02.10.11 — 17:47
(14) Поищи «грязь» вне той области, которую ты загрузить хочешь.
А может, у тебя объединённые ячейки там есть. Или ещё какие-нибудь оформительские приколы.
16 — 02.10.11 — 18:09
выложи кусок файла куданить
17 — 02.10.11 — 18:19
http://ifolder.ru/26100093 , вообще я из него всё удалил а ему пофиг
18 — 02.10.11 — 18:23
(0) Уверен что файл в старом формате? Попробуй так: Extended Properties =»Excel 12.0 Xml;HDR=YES»
19 — 02.10.11 — 18:29
Так пишет невозможно найти устанавливаемый ISAM ))
20 — 02.10.11 — 18:29
(17) Бедное ADO…
21 — 02.10.11 — 18:30
(17) объяснишь почему??
22 — 02.10.11 — 18:31
ой )) (20)
23 — 02.10.11 — 18:57
Up
24 — 02.10.11 — 19:06
(0)
Указанный код не может ошибку «внешняя таблица не имеет предполагаемый формат» вызывать.
Давай весь текст.
25 — 02.10.11 — 19:12
(24)
ФайлExcel = «C:UsersДенискаDesktopNIX3.xls»;
ADOСоединение = Новый COMОбъект («ADODB.Connection»);
ADOСоединение.ConnectionString=
«Provider=Microsoft.Jet.OLEDB.4.0;Data Source=»+ФайлExcel+»;Extended Properties=»+»»»Excel 8.0;HDR=YES;IMEX=1″»;»;
ADOСоединение.Open();
И всё,можешь попробовать, файлик в (17) есть
26 — 02.10.11 — 19:20
Поскольку никакая таблица в озвученных манипуляциях не указана, то и ошибки «внешняя таблица …» быть не должно.
ЗЫ. Подключиться к файлу из (17) я попробовал, никаких ошибок, разумеется нету.
27 — 02.10.11 — 19:26
ФайлExcel = «C:UsersДенискаDesktopNIX3.xls» а это не внешняя таблица??? У меня на опене с такой ошибкой отваливается
28 — 02.10.11 — 19:30
(26)Может у тебя какой то другой код, кинь если не трудно
29 — 02.10.11 — 19:35
(27)
>> ФайлExcel = «C:UsersДенискаDesktopNIX3.xls» а это не внешняя таблица???
Нет, с «точки зрения» ADO это база данных, в которой содержится энное количество таблиц. В случае с файлом (17) таблицы следующие:
Оглавление$
Пояснения$
Прайс
‘Комплектующие и периферия$’
‘Комплектующие и периферия’$Print_Area
‘Комплектующие и периферия’$_FilterDatabase
30 — 02.10.11 — 19:48
Ну тогда я вообще запутался, я уже в отдельную обработку скопировал 3 строчки кода, всё таже ошибка, хотя быть её как было сказано не может
31 — 02.10.11 — 20:57
up
32 — 03.10.11 — 01:42
(19) Обнови MIDAC
774816
33 — 03.10.11 — 09:25
пробуй через ODBC
Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=C:MyExcel.xls;DefaultDir=c:mypath;
http://www.connectionstrings.com/excel
<<Часто Задаваемые Вопросы
В. При возникновении ошибки в работе сценария или компьютера программа сохраняет не все данные в файл Excel.
О. Excel не является полноценной базой данных, и методы работы с ним, предоставленные компанией-производителем, не позволяют принудительно записывать данные. Данные записываются порциями и при некорректном закрытии соединения с файлом Excel в лучшем случае может быть потеряна некоторая часть данных, а в худшем испорчен весь файл. Используйте Microsoft Access для более надёжного хранения данных.
В. Почему некоторые номера телефонов в программе пустые, хотя в документе Excel они заполнены?
О. Программа получает доступ к документу Excel, используя стандартные драйверы Microsoft. Они обладают рядом особенностей, в данном случае, драйвер принимает решение о типе поля (строка, число или дата) на основании нескольких первых строк. Если в этих ячейках окажутся числа, драйвер решит, что все остальные строки так же должны содержать числовые значения, и если встретит строку, вернет пустое значение. И наоборот. Для того, что бы решить эту проблему, следует привести все ячейки с номером телефона к одному типу: строке (желательно).
Описание подобного поведения Excel на сайте производителя (англ.).
Обратите внимание! После преобразования ячеек к одному формату необходимо обязательно создать конфигурацию заново.
Необходимо так же учитывать, что Excel самостоятельно решает, что некоторые данные являются цифрами и таким образом их и хранит. Для того, чтобы телефонные номера воспринимались Excel’ом именно как текст, поставьте перед ними апостроф. То есть, не «8-800-775-0105», а «’8-800-775-0105». В этом случае драйвер однозначно распознает введённую дальше информацию как текст.
В. Почему программа пишет сообщение об ошибке при произнесении суммы долга для некоторых абонентов из Excel?
О. Как и в предыдущем вопросе, проверьте формат ячеек, в которых размещены суммы. Драйвер доступа к Excel определяет формат ячеек по первым нескольким строкам, и если формат последующих ячеек не совпадает с выбранным, возникает ошибка.
В. Что обозначают поля в базах данных, устанавливаемых с программой?
О. Список полей с названиями:
База данных | Назначение полей | |||||
Телефон | Имя абонента | Долг | Статус обзвона | Время обзвона | Количество звонков | |
Английская установка | ||||||
Sample.dbf | Phone | Name | Debt | Status | CallTime | Attempts |
Sample.mdb | Phone | Name | Debt | Status | CallTime | Attempts |
Sample.txt | Phone | Name | Debt | — | — | — |
Sample.xls | Phone | Name | Debt | Status | Call Time | Quantity of calls |
Русская установка | ||||||
Sample.dbf | Phone | Name | Debt | Status | CallTime | Attempts |
Sample.mdb | Phone | Name | Debt | Status | CallTime | Attempts |
Sample.txt | Телефон | ФИО | Долг | — | — | — |
Sample.xls | Телефон | ФИО | Долг | Статус обзвона | Время обзвона | Количество звонков |
Рекомендуемый тип | текстовый | текстовый | числовой/денежный | текстовый | дата-время/текстовый | цифровой |
В. Всё было хорошо, но потом программа перестала подставлять значения полей Excel, как это исправить?
О. Проверьте, на первой ли строке расположены названия колонок? Драйвер чтения данных определяет названия полей из первой строки, поэтому, если в файл Excel добавить пустые строки, колонки будут проименованы самим драйвером: F1, F2 и т.д.
В. Почему программа звонит по отсутствующим номерам в пустых ячейках Excel?
О. Excel — это не полноценная база данных, а скорее документ, поэтому, если вы прокрутите страницу вниз, а затем введёте в любую ячейку какие-то данные (даже нажмёте пробел), все строки до выбранной вами будут считаться значащими, даже если вы после удалите информацию из этой строки.
Для того, чтобы программа не обрабатывала эти строки, их необходимо выделить, нажав на цифры слева, обозначающие номера строк, затем нажать на них правую кнопку мыши и выбрать «Удалить»:
После этого обязательно надо сохранить файл.
В. Почему нельзя записать в текстовый файл?
О. Программа работает с различными источниками данных используя стандартную технологию ADO. Драйвера
Microsoft для работы с текстовыми файлами поддерживают только добавление записей в конец файла, изменение
существующих записей не предусмотрено.
В. Почему программа звонит тем, кому уже дозвонилась?
О. В программном продукте Call Office предусмотрена проверка предыдущих результатов обзвона для каждого номера. Для того, чтобы программа корректно обрабатывала статус для номера телефона, необходимо выбрать пункт «Учитывать предыдущие результаты обзвона из столбца» на странице «Выбор полей с данными»:
И «Записать результат звонка в столбец» на странице «Выбор полей для записи» так, как показано на рисунке:
В вашей конкретной базе данных может не быть столбца с названием «Статус обзвона», названия столбцов выбираются из неё.
Обратите внимание, необходимо выбрать один и тот же столбец для обоих пунктов! В противном случае программа будет проверять результаты в том столбце, в который их не записывала.
В. Программа звонит по номерам один раз, после этого приходится очищать таблицу вручную, чтобы звонила ещё раз.
О. На странице «Выбор полей с данными» вы можете отметить галочкой пункт «Учитывать количество попыток».
На следующей странице («Расширенные настройки») вы можете указать, сколько раз звонить на каждый номер.
В этом случае при обзвоне программа записывает в указанное поле (на рисунке это поле «Количество звонков») количество попыток дозвона и проверяет при каждом цикле, не достигнут ли предел попыток дозвона. Если предел достигнут, данный номер пропускается.
В. При записи результата звонка появляется окно ошибки Call Studio Message с надписью: «В операции должен использоваться обновляемый запрос» и текстом запроса на запись.
О. Это ошибка записи в базу данных. Она может возникать из-за того, что файл, с которым работает программа, защищен от записи, или вы не имеете права изменять содержимое базы данных.
Кроме того, подобную ошибку могут вызывать настройки подключения драйвера источника данных. Зайдите в меню:
Пуск -> Панель управления -> Администрирование -> Источники данных (ODBC)
переключитесь во вкладку «Пользовательский DNS» и выберите нужный вам драйвер. На рисунке красным отмечено, какая именно галочка должна быть отключена, чтобы пользователь имел возможность записывать данные в файл Excel, используемый в качестве источника (базы) данных:
В. Не открывается файл .xlsx. Пишет ошибку «Внешняя таблица не имеет предполагаемый формат» (External table is not in the expected format)
О. К сожалению, при открытии файлов .xlsx зачастую происходит такая ошибка, связанная с неправильным чтением файла драйвером от компании Microsoft. Путей решения два:
- Сохранить файл в формате .xls, с которым такой проблемы не возникает. Для этого надо выбрать в меню «Сохранить как» и указать формат файла «Книга Excel 97-2003».
- Пересохранить файл (Файл -> Сохранить как) под тем же именем.
Внимание! Иногда приходится пересохранять файл несколько раз.
В. Программа ставит статус «ОК» и больше не звонит по этим номерам
О. Если вы выбираете на странице «Выбор полей с данными» пункт «Учитывать предыдущие результаты», программный продукт Call Office больше не звонит по номерам, у которых проставлен статус ОК.
Для того, чтобы успешный статус устанавливался только для тех абонентов, которые прослушали сообщение определённое время, вы можете настроить это количество секунд на странице «Параметры дозвона»:
Обратите внимание: Если указать количество секунд, превышающее время звучания сообщения, успешный статус не будет проставлен ни одному из абонентов, и программа может позвонить им повторно!
В. Почему программа не произносит сумму долга?
О. Чаще всего это связано с тем, что неправильно настроено звуковое сообщение для произнесения суммы долга.
Начнём с самого начала.
Нажимаем на кнопку «Добавить звук» и попадаем на страницу с выбором сообщения.
Здесь нам нужен пункт «Выражение», активировав который мы получаем возможность добавлять в произносимое выражение поля базы данных.
Нажимаем кнопку «Вставить поле» справа от названия поля, и название поля в квадратных скобках появляется в тексте выражения. Для того, чтобы сумма была правильно произнесена, настройки по умолчанию подходят абсолютно. За денежную единицу, если она не выбрана, принимается российские рубли.
Всё готово. Для проверки нажимаем кнопку «Проверить», и результат, взятый из первой записи базы данных, появится в текстовом виде в специальном поле под этой кнопкой. Для полной уверенности в правильности настроек нажимаем кнопку «Проиграть звук» справа от кнопки «Проверить».
Обратите внимание! Если у вас не установлена голосовая библиотека, суммы свыше ста девяносто девяти рублей не будут произноситься.
В. Программа показывает список файлов .dbf, а после выбора конкретного файла пишет: «Ошибка Объект ‘Sample_en’ не найден ядром базы данных Microsoft Jet. Проверьте существование объекта и правильность имени и пути в SQL запросе: select * from `Sample_en`»
О. Драйвер ADODB, используемый программой для открытия файлов, игнорирует символы подчеркивания. Начиная от подчеркивания и дальше символы игнорируются, происходит попытка открыть файл ‘Sample’. Если такой файл отсутствует, программа выводит сообщение об ошибке. В случае, если файл существует, ошибка будет в том, что программа работает не с тем файлом, который указан в конфигурации.
В. У меня есть поле «Тел.» с номером телефона. Программа показывает его при выборе как «Тел#», а после не может прочитать.
О. Драйвер ADODB, используемый программой для открытия файлов, преобразовывает точку в символ #, а при подстановке в SQL-запрос игнорирует этот символы. Используйте в названиях полей только буквы и цифры.
В. Какие базы данных поддерживаются вашей программой?
О. В настоящее время программный продукт Call Office поддерживает получение данных из следующих источников:
- Документ Excel
- Данные Outlook
- ODBC-источник/произвольная строка подключения
- Текстовый файл
- Microsoft Access
- MySQL
- Oracle
- Firebird
- dBase (.dbf)
- MSSQL
В. В сообщении об ошибке написано: «Файл не может быть открыт ядром базы данных Microsoft Jet. Файл уже открыт другим пользователем для монопольного доступа или требуется разрешение на просмотр данных». Что делать?
О.
1. Чаще всего проблема связана с тем, что файл, используемый сценарием Call Office в качестве источника данных открыт в другой программе или некорректно завершенной ранее запущенной копией Call Office. Остановите все запущенные сценарии и закройте все открытые окна Call Office, завершите все процессы mshta.exe. Если ошибка не исчезает, перезагрузите компьютер.
2. Если все действия из пункта 1 не помогли, значит, файл источника данных находится на сетевом или закрытом от несанкционированного доступа диске. Проверьте доступность файла источника данных, пересоздайте конфигурацию, указав в качестве источника данных доступный для чтения/записи файл.
В. В статусе всех звонков проставляется «Не удается конвертировать строку в число».
О. Вы используете произнесение суммы долга из столбца базы данных, например, «[Долг]». Если столбец отсутствует, возникает такая ошибка. Столбцы «[Долг]» и «[долг]» не одинаковые, различия в написании букв (заглавных/строчных) важны. Также важны настройки формата ячеек, а именно:
1. Формат поля должен быть Числовой.
2. В «Формат ячеек…» (При нажатии правой кнопкой мыши по ячейке) должна быть установлена опция «Разделитель групп разрядов».
3. В содержимом ячейки не должно быть пробелов и букв.
В. Программа при обращении к базе данных выдаёт номер ошибки.
О. Номера ошибок вы можете посмотреть на странице описания ошибок ADO от Microsoft: http://support.microsoft.com/kb/209050/ru
В. Можно ли звонить моим абонентам из базы данных Skype?
Да, в качестве базы данных Skype используется SQLite. Описание настройки подключения этого источника данных вы можете увидеть здесь.
В. Неверная кодировка в базе MySQL. Какую кодировку необходимо использовать при создании базы?
Кодировка в самой базе MySQL не имеет значения, имеет значение, какая кодировка указана на клиенте, так как MySQL автоматически преобразует данные в кодировку клиента.
Кодировку клиента можно указать разными способами:
1. в файле my.cnf/my.ini в раздел [server] добавить следующую строку:
- default-character-set=cp1251
- или
- init-connect=»set names cp1251″
2. Можно посмотреть/сменить кодировку клиента в переменных сервера MYSQL
- show variables like ‘character_set_client’
3. Указать кодировку в строке соединения ODBC, например:
- Driver={MySQL ODBC 3.51 Driver};Server=myServerAddress; charset=UTF8;Database=myDataBase;User=myUsername;Password=myPassword;Option=3;
4. Указать кодировку записью строки set character_set_results=cp1251 в Connector/ODBC, во вкладке Connect Options, в поле Initial Statement.
Я пытаюсь прочитать файл Excel (xlsx), используя код, показанный ниже. Я получаю сообщение «Внешняя таблица не в ожидаемом формате». ошибка, если файл уже не открыт в Excel. Другими словами, я должен сначала открыть файл в Excel, прежде чем я смогу прочитать его из моей программы на C #. Файл xlsx находится в общей папке в нашей сети. Как я могу прочитать файл, не открывая его предварительно? Спасибо
«Внешняя таблица не в ожидаемом формате». обычно возникает при попытке использовать файл Excel 2007 со строкой подключения, в которой используются: Microsoft.Jet.OLEDB.4.0 и Extended Properties = Excel 8.0.
Использование следующей строки подключения, похоже, решает большинство проблем.
Спасибо за этот код Я очень ценю это. Работает на меня.
Итак, если у вас есть различная версия файла Excel, получите имя файла, если его расширение .xlsx, использовать этот:
(У меня слишком низкая репутация, чтобы комментировать, но это комментарий к записи JoshCaba, использующей Ace-engine вместо Jet для Excel 2007)
Если на вашем компьютере не установлен / не зарегистрирован Ace, вы можете получить его по адресу: https://www.microsoft.com/en-US/download/details.aspx?id=13255
Это также применимо к Excel 2010.
Просто добавь мой случай. Мой файл xls был создан функцией экспорта данных с веб-сайта, расширение файла — xls, его можно нормально открыть в MS Excel 2003. Но и Microsoft.Jet.OLEDB.4.0, и Microsoft.ACE.OLEDB.12.0 получили отметку » Внешняя таблица не соответствует «исключению ожидаемого формата».
Наконец, проблема в том, что, как сказано в исключении, «формат не соответствует ожидаемому». Хотя имя расширения — xls, но когда я открываю его в текстовом редакторе, на самом деле это хорошо сформированный файл html, все данные находятся в
- Так было и со мной, но на самом деле мой файл был XML. Тем не менее было бы неплохо узнать, как импортировать его с помощью OBDC, но я не думаю, что он поддерживается.
- @DavidRogers, я когда-либо видел что-то вроде XML ODBC Driver, но никогда не использовал, посмотрите cdata.com/drivers/xml/odbc.
- Тот же случай здесь, я думаю, магия началась с открытия файла с помощью блокнота, на самом деле я голосую за ваш ответ, потому что до сих пор я не прокручивал вниз, чтобы увидеть ваше сообщение (и теперь я уже открыл файл / проанализировал его с пакетом Html Agility …), но ваш ответ заслуживает быть первым, по чистой логике: ОТКРОЙТЕ ФАЙЛ СНАЧАЛА! и посмотрите, есть ли внутри какой-нибудь файл в стиле Excel!
- Если это файл HTML, просто примените расширенные свойства, например:
У меня такая же проблема. которые разрешены с помощью следующих шагов:
1.) Щелкните Файл
2.) Выберите «Сохранить как».
3.) Щелкните раскрывающийся список (Сохранить как тип).
4.) Выберите книгу Excel 97-2003.
5.) Нажмите кнопку Сохранить.
- 1 Бу! Возврат к устаревшему формату файла даже не должен рассматриваться. На момент ответа формату 97-2003 было 16 лет и он устарел на 12 лет. Я мог понять несколько лет, но устаревание более чем на десять лет не должно говорить профессиональному разработчику о том, что формат файла должен быть старше.
У меня была такая же проблема (с использованием ACE.OLEDB), и для меня ее решила эта ссылка:
http://support.microsoft.com/kb/2459087
Суть в том, что установка нескольких офисных версий и различных офисных 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 {3BE786A0-0366-4F5C-9434-25CF162E475E} InprocServer32
Имя значения: (по умолчанию)
Данные значения: C: Program Files Common Files Microsoft Shared OFFICE14 ACEOLEDB.DLL
(ОС: 64-битная, Офисная: 32-битная)
Ключ: HKCR Wow6432Node CLSID {3BE786A0-0366-4F5C-9434-25CF162E475E} InprocServer32
Имя значения: (по умолчанию)
Данные значения: C: Program Files (x86) Common Files Microsoft Shared OFFICE14 ACEOLEDB.DLL
- Мне было проще просто зайти в «Программы и компоненты» и «Восстановить ACE». (Для меня ACE называется Microsoft Access Runtime 2016). Я предполагаю, что у меня был этот вариант проблемы, и что Repair просто сбросил все ключи реестра для меня, и мне не пришлось беспокоиться о regedit ;-).
Я также видел эту ошибку при попытке использовать сложные формулы INDIRECT () на листе, который импортируется. Я заметил это, потому что это была единственная разница между двумя книгами, одна из которых импортировала, а другая — нет. Оба были файлами 2007+ .XLSX, и был установлен движок 12.0.
Я подтвердил, что это проблема:
- Создание копии файла (проблема все еще была, так что не было никакой разницы в сохранении как)
- Выбор всех ячеек на листе с помощью косвенных формул
- Вставка только как значения
и ошибка исчезла.
У меня возникали ошибки при чтении книги XLSX третьей стороной и Oledb. Проблема заключается в скрытом листе, который вызывает ошибку. Отображение рабочего листа позволило импортировать книгу.
Если файл доступен только для чтения, просто удалите его, и он снова заработает.
Заглянул в ту же проблему и нашел эту ветку. Ни одно из приведенных выше предложений не помогло, за исключением комментария @ Smith к принятому ответу 17 апреля 2013 года.
Предыстория моей проблемы достаточно близка к проблеме @ zhiyazw — в основном я пытаюсь установить экспортированный файл Excel (в моем случае SSRS) в качестве источника данных в пакете dtsx. Все, что я сделал, после некоторой возни с этим, переименовал рабочий лист. Это не обязательно должно быть в нижнем регистре, как предложил @Smith.
Я предполагаю, что ACE OLEDB ожидает, что файл Excel будет следовать определенной структуре XML, но каким-то образом службы Reporting Services не знают об этом.
- Я столкнулся с той же проблемой таблицы не в ожидаемом формате. Я убедился, что в моей книге нет скрытых листов. Фактическое имя рабочего листа в книге пишется с заглавной буквы, но в коде C # для анализа файла, который я добавил .ToLower () для имени вкладки, и теперь я могу снова проанализировать файл excel. БЛАГОДАРЮ ВАС!
Этот адрес файла Excel может иметь неправильное расширение. Вы можете изменить расширение с xls на xlsx или наоборот и повторить попытку.
файл может быть заблокирован другим процессом, вам нужно скопировать его, а затем загрузить, как говорится в этом после
Это также может быть файл, содержащий изображения или диаграммы, см. Это: http://kb.tableausoftware.com/articles/knowledgebase/resolving-error-external-table-is-not-in-expected-format
Рекомендуется сохранить как Excel 2003
Просто добавляю свое решение этой проблемы. Я загружал файл .xlsx на веб-сервер, затем читал его и массово вставлял в SQL Server. Получал такое же сообщение об ошибке, попробовал все предложенные ответы, но ни один из них не работал. В конце концов я сохранил файл как excel 97-2003 (.xls), который работал … единственная проблема, которая у меня сейчас есть, заключается в том, что в исходном файле было более 110 000 строк.
Если у вас все еще есть эта проблема, проверьте свои разрешения, я пробовал многие из этих предложений, и моя конкретная проблема заключалась в том, что файл, который я хотел обработать, находился под контролем источника, а поток не имел разрешений, мне пришлось изменить все разрешения для папки и он начал работать (я обрабатывал там много файлов) … Он также соответствует многим предложениям, например, изменить имя файла или проверить, не заблокирован ли файл другим процессом.
Надеюсь, это вам поможет.
У меня была эта проблема, и изменение расширенных свойств на импорт HTML исправило ее в соответствии с этим сообщением Маркуса Мириса:
Вместо OleDb вы можете использовать Excel Interop и открывать лист только для чтения.
https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.workbooks.open(v=office.15).aspx
- 5 Взаимодействие с Excel не рекомендуется для работы с Excel. Это может вызвать множество проблем, поэтому не рекомендуется.
- Хотя это старый пост, я согласен с MaxOvrdrv, использование взаимодействия — не лучшая идея, и его следует избегать, хотя бы по той причине, что для этого требуется полная установка Excel на сервере.
- Вы не должны этого делать.
ACE заменил JET
Ace поддерживает все предыдущие версии Office
Этот код работает хорошо!
- 1 Это не так. Проблема все еще может возникнуть, я еще не выяснил, почему, поскольку все мои файлы из Excel 2007, и некоторые из них работают, некоторые — нет.
- У вас есть источник для этого утверждения? Сам не знаю, просто интересно.
Это может произойти, если книга защищена паролем. Есть несколько обходных путей для снятия этой защиты, но большинство примеров, которые вы найдете в Интернете, устарели. В любом случае, простое решение — снять защиту книги вручную, в противном случае используйте что-то вроде OpenXML для программного удаления защиты.
Недавно я увидел эту ошибку в контексте, который не соответствовал ни одному из ранее перечисленных ответов. Оказался конфликт с AutoVer. Решение: временно отключите AutoVer.
У меня недавно было это «System.Data.OleDb.OleDbException (0x80004005): внешняя таблица не в ожидаемом формате». возникает ошибка. Я полагался на Microsoft Access 2010 Runtime. До обновления, которое было автоматически установлено на моем сервере 12 декабря 2018 года, мой код C # работал нормально с использованием поставщика Microsoft.ACE.OLEDB.12.0. После установки обновления от 12 декабря 2018 года я начал получать сообщение «Внешняя таблица не в ожидаемом формате» в моем файле журнала.
Я отказался от среды выполнения Microsoft Access 2010 и установил среду выполнения Microsoft Access 2013, и мой код C # снова начал работать без исключения «System.Data.OleDb.OleDbException (0x80004005): внешняя таблица не в ожидаемом формате». ошибки.
Версия 2013 года, которая исправила эту ошибку для меня https://www.microsoft.com/en-us/download/confirmation.aspx?id=39358
Версия 2010 года, которая работала у меня до обновления, которое было автоматически установлено на моем сервере 12 декабря. https://www.microsoft.com/en-us/download/confirmation.aspx?id=10910 https://www.microsoft.com/en-us/download/confirmation.aspx?id=10910
У меня также была эта ошибка в прошлом месяце в автоматизированном процессе. Код C # работал нормально, когда я запускал его отладку. Я обнаружил, что учетной записи службы, на которой запущен код, также необходимы разрешения для папки C: Windows Temp.
Моя область действия состоит из загрузки шаблона и проверки шаблона, когда он заполнен данными Итак,
1) Загрузите файл шаблона (.xlsx) со строкой заголовка. файл создается с использованием openxml и он работает отлично.
2) Загрузите тот же файл без каких-либо изменений из загруженного состояния. Это приведет к ошибке подключения и отказу (соединение OLEDB используется для чтения листа Excel).
Здесь, если данные заполнены, программа работает как положено.
Любой, у кого есть идея, что проблема связана с файлом, в котором мы ее создаем. xml format, если мы откроем его и просто сохраним, преобразуем его в формат Excel, и он работает хорошо.
Есть идеи загрузить Excel с предпочитаемым типом файла?
- Вы не должны задавать вопросы в своих ответах, если вам нужны ответы на ваш вопрос, задавайте их при необходимости отдельно.
Работая с некоторым более старым кодом, я обнаружил то же общее исключение. Очень сложно отследить проблему, поэтому я подумал, что добавлю сюда, если это поможет кому-то другому.
В моем случае в другом месте проекта был код, открывающий StreamReader в файле Excel. перед OleDbConnection попытался открыть файл (это было сделано в базовом классе).
Итак, в основном мне просто нужно было сначала позвонить в объект StreamReader, а затем я смог успешно открыть соединение OleDb. Это не имело ничего общего ни с самим файлом Excel, ни со строкой OleDbConnection (которую я, естественно, сначала искал).