ADO с файлами XLSX в Delphi XE

Проблема здесь в соединении ADO с Excel – это все еще стандартный способ чтения / записи файлов excel в среде Dephi XE? Мы придумываем несколько проблем при чтении / записи с использованием драйвера ACEOLEDB (ACE 12), и это включает

  • Чтение ячеек с hashtags не возвращает результаты
  • «Недействительная плавающая точка» при экспорте сеток.

Мы также заметили, что на компьютере Microsoft существует множество версий драйвера ACE 12 (через исполняемые файлы драйверов Access Database), и каждый из них, похоже, имеет разные проблемы с Delphi.

Имея в виду эти вещи,

  1. На данный момент используется ADO с Excel.
  2. У кого-нибудь еще есть эти проблемы и что вы сделали для их решения (кроме использования файлов XLS вместо XLSX)?

ADO в Delphi склоняется к модели TDataSet, что означает строго табличные данные … что excel не является. Каждый лист Excel содержит случайные ячейки, некоторые из которых могут составлять квази-табличные диапазоны или не могут.

В зависимости от установленного программного обеспечения вы можете

1) использовать приложение Excel для открытия XLSX, прочитать ячейки и передать их в свою программу. Это самый простой и совместимый метод, хотя он заметно медленный из-за сортировки и коммутации COM IPC. Есть трюки, чтобы закрепить его, например, скрывать окно Excel, копируя массивы данных, а не поэтапный подход и т. Д.
Начать изучение компонента TExcelApplicationhttp://docwiki.embarcadero.com/RADStudio/XE3/en/Using_Component_Wrappers

2) Если вы не хотите полагаться на наличие коммерческого Excel, вы можете попробовать читать файлы XLSX с помощью OpenOffice. Vanilla OpenOffice может читать только их, но некоторые другие дистрибутивы также могут писать их. OpenOffice также предоставляет внешние API как на основе COM, так и на основе HTTP. Я знаю, что Delphi-проекты Delphi-OOo взаимодействуют, но лично их не использовали, и, не заметив этого подхода, я не могу сказать никаких подробных оценок.

3) Microsoft также использовала для продажи Office для разработчиков или таких, которые предоставили вам ядра Access и Excel как распространяемые компоненты, которые вы могли бы передать с вашим приложением, установить их и использовать. Не знаю, если это все еще возможно.

4) существует набор коммерческих компонентов, которые читают и записывают эти файлы напрямую, без необходимости выполнения внешнего EXE-проекта. Хотя это будет самый быстрый способ работы, он будет поддерживать только некоторые подмножества функций (которые могут или не могут быть одобрены для ваших конкретных целей) и могут иметь проблемы с «будущей совместимостью», поскольку Microsoft выпустит обновленные версии XLS и XLSX (что опять-таки может быть для вас чем-то или не связано с вами). Как и TXLSFile для формата Biff8, существует, например, библиотека OExport . Существует также компонент из хорошо известной TMS Studio и, возможно, еще немного .

5) Вы можете присоединиться к проекту с открытым исходным кодом и попытаться улучшить его для своих нужд, а затем это зависит от того, сколько подмножества вам нужно.

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

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

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

Учитывая, что Excel НЕ собирается уходить, но Microsoft не может полагаться на то, чтобы не предавать своих пользователей, например, устраняя поддержку VBA и COM, было бы здорово, если бы кто-то (и я бы хотел, чтобы у меня были навыки) может создать надлежащую поддержку Excel из Delphi.

  • Ошибка загрузки файла Excel в ASP.NET
  • Чтение данных с использованием OLEDB из открытого файла Excel
  • как читать файл excel, который только на чтение из c #?
  • Excel Expert: нужно хорошее решение для заполнения некоторых данных в сложном листе excel
  • conn.GetSchema («Таблицы») в файле Excel не возвращает рабочие листы
  • OpenXML занимает гораздо больше времени, чем OLEDB, чтобы читать строки из листа Excel
  • SSAS 2005 Совсем недавно закрыл соединение RANDOMLY
  • Как добавить столбец excel в рабочий лист
  • IMEX в OleDbConnection
  • Не удается найти рабочий лист
  • OleDb Чтение Excel не чтение всех строк после публикации в IIS (размер файла)
  • Давайте будем гением компьютера.