Получение непредвиденной ошибки из внешнего драйвера базы данных (1) при импорте данных из Excel для доступа

У меня есть 2010 Excel file с листом, который охватывает 34864 rows и 1387 columns. Я пытаюсь импортировать его в Access 2010 с помощью мастера импорта, но когда я выбираю этот лист, Access не отвечает и через несколько секунд дает мне

"Неожиданная ошибка из внешнего драйвера базы данных (1)"

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

Ответ 1

Эта ошибка может возникнуть после установки исправления безопасности KB4041681. Смотрите эту запись MSDN. В моем случае замена Microsoft.Jet.OLEDB.4.0 провайдера на Microsoft.ACE.OLEDB.12.0 помогла.

Ответ 2

Отметьте это для спецификации Access 2010: http://office.microsoft.com/en-us/access-help/access-2010-specifications-HA010341462.aspx.

В вашем случае это может быть количество столбцов, поэтому сначала попробуйте импортировать меньше 255. Кроме того, это может быть размер данных в столбцах или типах данных (импорт текста в числовые и т.д.).

Ответ 3

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

Ответ 4

Сохраните лист Excel в файле с расширением CommS с разделителями. Затем загрузите его в виде текстового файла. Для меня это прекрасно работает.

Проблема заключается в том, что в .xls(x) присутствуют всевозможные проблемы с планировкой. Преобразуя его в .CSV, удаляет все связанные с планированием разметки и преобразует их в "сырые" данные.

все лучшее!

Ответ 5

В ответ на строки RHiggins ответьте:

В моем случае Jet OleDb.4.0 выбросил эту ошибку (oledbconnection.open()), потому что имя рабочего листа в рабочей книге (.xls) было слишком длинным.

Ответ 6

Загрузите и установите Распространяемый Microsoft Access Database Engine 2010, а затем измените строки подключения DB в Microsoft Excel, чтобы использовать ACE в качестве поставщика.

Изменить (пример):

Provider=Microsoft.Jet.OLEDB.4.0

в

Provider=Microsoft.ACE.OLEDB.12.0.

Microsoft работает над разрешением и предоставит обновление в предстоящей версии.

Ответ 7

Используйте этот

OleDbConnection conObj = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\a.XLS;Extended Properties=Excel 8.0;")

вместо этого

OleDbConnection conObj = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\a.XLS;Extended Properties=Excel 8.0;")

Ответ 8

В моем случае электронная таблица была связана с другой таблицей. Я импортировал подмножество оригинального листа. Я создал новый лист и скопировал столбец данных по столбцу в блокнот, а затем на новый лист, удалив ссылки. В ссылках было что-то, что вызывало проблему.
BTW: это был этот набор данных, так как я сделал эту последовательность импорта из этой электронной таблицы в эту базу данных более 50 раз. Сокращение вдвое данных для первой (большей) половины данных, но не для второй.

Ответ 9

Привет, я также сталкиваюсь с этой ошибкой при импорте файла .xlsb. После этого я скопировал содержимое в другой файл xlsx и импортировал этот файл xlsx.

Ответ 10

Я получал эту ошибку при импорте из файла XLSB, сохраняю файл как файл XLSX и затем импортирую, должен работать

Ответ 11

Другая проблема, которая обнаруживается, заключается в том, что файл excel сохраняется как бинарная таблица excel, просто сохраняя ее как книгу Excel и она отлично загружается.

Ответ 12

У меня была такая же ошибка. Электронная таблица была создана из другого программного обеспечения (SAP). Поскольку он не был создан Office, Excel не смог его прочитать (!?!). Я должен открыть их в Excel, сохранить его, а затем загрузить в Access и он работает! В худшем случае, скажем, у вас есть десятки файлов, вы можете просто открыть и закрыть их кодом VBA перед импортом.

Ответ 13

У меня была такая же проблема, после получения обновления для системы безопасности в Windows7 эта ошибка произошла. У нас слишком много файлов excel для выполнения операции открытия/закрытия, поэтому я решил попробовать другие способы.

1- Вернуть точку восстановления, когда Access работал нормально: в моем случае это не сработало. Единственное изменение в конфигурации программного обеспечения - это обновление для системы безопасности, и кажется, что обновление для системы безопасности по-прежнему вызывает проблемы.

2- Сокращение строк, столбцов и т.д.: Это не сработало для меня; первый файл, доступ к которому пытался достигнуть, имел 10k строк, что уменьшало эти строки до 3, не было решением.

3- Попытка изменить строку подключения: для меня это не сработало, это тоже не очень разумно; соединение работает годами, вдруг почему это остановится? В некоторых случаях это происходит, но не в этот раз.

4- Удаление последнего обновления для системы безопасности, работающего в моем случае. Ниже приведено исправленное обновление безопасности.

Снимок экрана с удаленным обновлением безопасности

Удачи в решении.

Ответ 14

Решено для Windows 7:

Удалите обновления безопасности KB4041681 и KB4041678 оба (связанные с поставщиком Excel и Jet/ACE)

Ответ 15

Решение, работавшее для меня при решении этой проблемы, заключается в том, что файл Excel, в котором выполняется импорт/экспорт, открывается при импорте и экспорте.

Проблема, по-видимому, вызвана тем, что транзакция Patch предотвращает транзакцию между файлами CLOSED.xls и другими внешними приложениями базы данных. Имея файл excel, открывайте адреса этой проблемы.

Ниже приведены примеры примеров кода, чтобы подчеркнуть, что работает, а что нет с VBA:

FAILS

wbTarget.SaveAs strFilename, xlExcel8
wbTarget.Close    
ExportSheetToDB strFilename, strSheetName, "tblTemp"

WORKS

wbTarget.SaveAs strFilename, xlExcel8
ExportSheetToDB strFilename, strSheetName, "tblTemp"
wbTarget.Close

Ответ 16

В моем случае (у меня такая же ошибка) проблема заключалась в том, что у меня была БД Access, хранящаяся на сетевом диске, на котором закончилось свободное место (недостаточно свободного места для завершения импорта). Я освободил место и сжал БД; ошибка не появилась снова.