ADO в Delphi склоняется к модели TDataSet, что означает строго табличные данные ... это не Excel. На каждом листе Excel есть заполненные случайным образом ячейки, некоторые из которых могут составлять квазитабличные диапазоны, а могут и не составлять.
В зависимости от установленного программного обеспечения вы можете
1) используйте приложение Excel, чтобы открыть XLSX, прочитать ячейки и передать их в свою программу. Это наиболее простой и совместимый метод, хотя он заметно медленный из-за маршалинга и переключения COM IPC. Есть уловки, чтобы закрепить это, например, скрытие окна Excel, копирование массивов данных вместо подхода по ячейкам и т. Д.
Начните изучать компонент TExcelApplication
- http://docwiki.embarcadero.com/RADStudio/XE3/en/Using_Component_Wrappers
2) Если вы не хотите полагаться на установленную коммерческую версию Excel, вы можете попробовать читать файлы XLSX с помощью OpenOffice. Ванильный 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 вообще не имеют внутренней регулярной структуры данных, в меньшей степени, такой строго табличной РСУБД.
person
Arioch 'The
schedule
12.03.2013