カスタム アプリケーションのデータを Excel のセルにリンクできるようにしたいと考えています。
そのためにどのような技術を使用しますか? 私は主に Unix 開発者であり、win32 テクノロジについて詳しく知りません。しかし、私が理解している限り、DDE は非常に古い技術ですが、最も簡単です。
OpenOffice などの他のオフィス スイートと一緒に使用できることは大きなメリットです。
「カスタム アプリのデータを Excel のセルにリンクする」とはどういう意味ですか?
外部アプリによって生成されたデータを Excel シートに表示しますか?
その場合、いくつかのオプションがあります。Excel データ プロバイダーはその 1 つの方法です。これは、ロードしたいデータがたくさんある場合に機能します。1 つのセルだけでは、やり過ぎかもしれません。
ネットワーク インターフェイス (HTTP など) を介して外部データにアクセスできる場合は、Excel マクロ コードを記述してそれを使用できます。ServerXmlHttp オブジェクトを使用して、Excel 内からそれを使用できます。それに関するいくつかのガイダンスはHERE です。
もう 1 つの方法は、カスタム COM オブジェクトを介してデータを公開することです。これは、Excel で非常に使いやすい再利用構造です。それを行うにはいくつかのコードを作成する必要がありますが、それほど複雑ではありません。.NET、C++、Javascript、VBScript、PerlScript などで記述できます。
ここで見たすべてのソリューションには、データをプッシュして優れたものにするアプローチがあります。このデータを Excel 自体にプルする責任を与えないのはなぜですか? Excel には、oleDB および ODBC を介してデータを追加する機能があります。(少なくとも私が知っているバージョンから)私のマシンにある唯一のバージョンであるOffice2007でのみテストできます。
このオプションをスプレッドシートのデータ タブに追加するだけです。ものすごく単純。そうすれば、アプリでコードを維持して Excel を開いたり、コードを実行してコードをセルにプッシュしたりする負担からも解放されます。おそらく、このマクロを記録して、Excel シートを開いたときにそれを実行できます。
COM インターフェイスは非常に簡単です。マクロを記録することから始めて、やりたいことを実行します。その後、生成されたコードを選択したプログラミング言語に翻訳します。
.NET では、Excel 用の COM ライブラリを使用します。Workbook、Worksheet、および Range オブジェクトを使用して、特定のワークシートおよびワークブック内の特定のセルをアドレス指定できます。これらは .NET (特に VB.NET) からうまく機能します。
セル値にリンクする最も簡単な方法は、Visual Studio 2008 の .net データ プロバイダーを使用することです。より一般的な方法のいくつかへのリンクを次に示します。 リンク
データプロバイダーが同じではないため、これをオープンオフィスで利用できるようにするのは難しいでしょう.
Java/JVM とその Apache POI ライブラリを使用することをお勧めします。
Excel ファイルを読み書きでき、純粋なクロスプラットフォーム Java です。実際にはかなり信頼できます。
明確にするために: DDE はオープン オフィスで動作します。私はブルームバーグのユーザーで、DDE 経由で更新された株価へのブルームバーグ リンクを含むオープン オフィスで Office 2003 スプレッドシートを開きました。
ジョナタン、
ソース アプリケーションがデータをデータベースまたはテキスト ファイルに保存する場合、Excel の組み込みデータ関数を使用してデータを取得できます。そうでなければ、VS2008 との統合について Dayton に同意します。VS2005 を使用できますが、VSTO をインストールする必要があります。
DDE に関して - ほとんど時代遅れであることに加えて、異なるバージョンの Excel と異なる言語を使用すると問題が発生し、同じ操作に対して異なるキーワードを使用する必要があります。