2012-02-17 15 views
2

背景:Interopを使用してC#を使用してExcelを自動化する方法を検討するかどうかを判断しようとしています。私は確かにVBAの男ではなく、さまざまな理由から、私はその道を踏み出すことを好まないでしょう。私は他の選択肢についてあまり知らないし、何も買おうとは思っていない。.NETを使用しているMS ExcelとのCOM相互運用機能の(無料の)代替案は何か(あれば)ですか?

パフォーマンスは非常に重要です。

Excelを自動化するためにInteropを使用する際の参考文献を見つけようとしましたが、むしろ疎そうです。より良いもののいくつかはdatedであり、他の参考文献は多くの資料をカバーしていません。多くの人々は、既存の資料の多くがMS Officeのバージョンの違いに焦点を当てて時間を費やしているという事実を挙げています。また、.NET 4への移行が主張している改善が重要かどうかも疑問に思っています。

編集:私が達成しようとしていることの要点は、かなり複雑で複雑な書式設定だけでなく、かなり重い分析(線形回帰)の完全な自動化です。私は一度データを分析/計算しなければならないし、チャートの書式設定は本当に重要です。私はこれのすべてがVBAを介して可能だと思うが、私はVBAの男ではないので、私は確かにわからない。それはバックグラウンドプロセスとして実行されているので、アプリを隠してマクロ型のものと考えてください。パフォーマンスは非常に重要です(COMの妥当性に疑問を持つ理由の1つ)。 VBAはパフォーマンス上の理由からテーブルから離れている場合もあります。

今、質問のため。

私はこれを簡単に聞くことができます:あなたができるようにしたいExcelのInteropではできないものの洗濯物のリスト?あなたはあなたの開発経験の中でどうしたのですか?

Interopで行うことができないことは実際にはありません(下記のコメントを参照してください)、それは私がやろうとしていることに最も適しています。これを使用する方法 COMオブジェクトとExcelオブジェクトモデルは、かなり脅威的な作業である可能性があります。そこには本当に良いリファレンスがありますか?

私が上記のことについてより良い方法がある場合は、それについて教えてください。 ExcelのDNAは言及されましたが、どこかバックエンドサーバーのアプリケーションやデータベースにアクセスできるユーザー定義のC#関数の作成を許可するよりもはるかに役立つとは思えません。

+2

実際に何をしたいですか? VSTOは公式のマイクロソフトのソリューションですが、有効ではありますが使用や展開に苦労する可能性があります。また、オープンソースのExcelDNAを使用することもできます。http://exceldna.codeplex.com/両方とも、.NET言語でコードをフロントエンドとしてExcelを効果的に使用できるアプリケーションを作成することができます。以前のバージョンの.Netフレームワークで書かれた他のアドインを使用している場合、別の.Netバージョンを使用して別のアドインを実行しようとすると問題に遭遇することに注意してください。 – dash

+1

interopライブラリは、COMインターフェイス上のPIAラッパーに過ぎないため、VBAで行うことができる.NET内の操作はすべて行うことができます。 – phoog

+0

Interopでは不可能なことは考えられませんが、Excel DNAやAddin Expressのようなものを使ってXLLインターフェイス経由でやりとりできるのでなければ、パフォーマンスは非常に悪いです。混合.NetバージョンとExcelバージョンの汎用コーディングも難しい場合があります。 Excel DNAをお勧めします...無料 –

答えて

2

あなたの質問に対する正解はありません。すべてが詳細と背景に依存します。

Excelオブジェクトモデル(get/putデータ書式チャートなど)とやりとりするときのInteropのパフォーマンスは、COMの上に追加のレイヤーがあるため、常に比較的遅くなります。
.Netの計算速度は、VBAコードの書き換えが遅い場合、特にVBAの計算速度よりも速くなります。
.NETフレームワークは、VBAフレームワークよりはるかに強力で複雑です。
Excelオブジェクトモデルは大きく、複雑です。 VBAマクロレコーダーはこれに役立ちますが、奨励的なコードを生成します。
XLLインターフェイスはCOMよりも高速ですが、Excelオブジェクトモデルの数が少なくなっています。

私の推測では、線形回帰計算を行うのではなく、オブジェクトモデルとのやりとりに時間の大部分が費やされるように見えるため、.NETよりVBAでのパフォーマンスの向上、使いやすさ、使いやすさが向上します。 (IMHOでは特にCPU集約型ではありません)。
もちろん、他の考慮事項があなたを好むかもしれません。NET

関連する問題