1

ここでの問題はExcelとのADO接続です-これはまだDephiXE環境内でExcelファイルを読み書きするための標準的な方法ですか?ACEOLEDBドライバー(ACE 12)を使用して読み取り/書き込みを行う場合、複数の問題が発生します。これには次のものが含まれます。

  • ハッシュタグ付きのセルを読み取っても結果は返されません
  • グリッドをエクスポートするときの「無効な浮動小数点」。

また、MicrosoftのWebサイトに(Access Databaseドライバーの実行可能ファイルを介して)ACE 12ドライバーの多くのバージョンがあり、それぞれがDelphiで異なる問題を抱えているように見えることにも気づきました。

これらのことを念頭に置いて、

  1. この時点で、ExcelでADOを使用するのは悪いですか?
  2. 他の誰かがこれらの問題を抱えていますか、そしてそれらを解決するためにあなたは何をしましたか(XLSXの代わりにXLSファイルを使用する以外に)?
4

2 に答える 2

1

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のように聞こえました。

于 2013-03-12T07:15:32.553 に答える
1

私は、COMを介してExcelを操作できることを実際に見つけただけです。私はADOのような代替案を試しましたが、それらは常に難解なバグでいっぱいのように見えます-あるいはそれは私の無知なのかもしれません。

COMは特定の領域で間違いなく遅いです。COMと(Excelファイル内の)VBAを組み合わせて使用​​して、必要な処理を実行しました。

Excelがなくなることはないが、Microsoftは、たとえばVBAとCOMのサポートを廃止するなどして、ユーザーを裏切らないようにすることはできません。 DelphiからExcelの適切なサポートを作成できます。

于 2014-06-04T16:02:01.387 に答える