DelphiのADOはTDataSetモデルに傾いています。これは、厳密に表形式のデータを意味します...Excelはそうではありません。各Excelシートにはランダムなセルが入力されており、それらの一部は準表形式の範囲を構成する場合と構成しない場合があります。
インストールされているソフトウェアに応じて、
1)Excelアプリケーションを使用してXLSXを開き、セルを読み取り、プログラムに渡します。これは最も簡単で互換性のある方法ですが、COMIPCのマーシャリングとスイッチングのために著しく遅くなります。Excelウィンドウを非表示にしたり、セルごとのアプローチの代わりにデータの配列をコピーしたりするなど、それを固定するためのトリックがあります。コンポーネントの
探索を開始します-http://docwiki.embarcadero.com/RADStudio/XE3/en/Using_Component_WrappersTExcelApplication
2)商用Excelのインストールに依存したくない場合は、OpenOfficeでXLSXファイルを読み取ってみてください。Vanilla OpenOfficeはそれらを読み取ることしかできませんが、他のディストリビューションもそれらを書き込むことができます。OpenOfficeは、COMベースとHTTPベースの両方の外部APIも公開しています。DelphiのDelphiプロジェクトがあることは知っています-OOoは相互作用していますが、個人的にはそれらを使用していませんでした。そのアプローチに注意することを除けば、詳細な評価はできません。
3)Microsoftは、AccessカーネルとExcelカーネルを再配布可能として提供し、アプリケーションと一緒に渡してインストールして使用できるOfficeforDevelopersなども販売していました。それでも実行可能であれば、Dunno。
4)外部EXEにジョブを実行させる必要なしに、これらのファイルを直接読み書きする一連の商用コンポーネントがあります。これが最も高速な作業方法ですが、機能の一部のサブセットのみをサポートし(特定の目標に適している場合とそうでない場合があります)、MicrosoftがXLSの更新バージョンを公開するため、「将来の互換性」に問題が生じる可能性があります。およびXLSXフォーマット(これもまた、あなたにとっていくらかまたはまったく関係がないかもしれません)。Biff8形式の場合と同様にTXLSFile
、たとえばOExport
ライブラリがあります。よく知られているTMSStudioのコンポーネントや、さらにいくつかのコンポーネントもあります。
5)いくつかのオープンソースプロジェクトに参加して、ニーズに合わせてプロジェクトを強化することができます。これも、必要なサブセットの量によって異なります。
多くの人がOLEDBを使用してExcelデータにアクセスしていますが、Excelファイルには内部の通常のデータ配置がまったくなく、厳密には表形式のRDBMSのようなものではないため、私にとっては常にいくつかのperversinoのように聞こえました。