C# アプリケーションの 1 つに Microsoft から提供されている Excel 相互運用機能アセンブリの使用を開始しました。順調に進んでいますが、強いタイピングが不足しているようで、正直VBAコードを書いているような気がします。C# から Excel を操作して、OO エクスペリエンスを向上させる別の方法はありますか? ちなみに、VS2010と.Net 4.0を使用しています。
7 に答える
Codeplex で EPPlus プロジェクトを見てみましょう。
私は最近これを使用しましたが、非常にうまく機能しました。(VS2010 および .Net4)
EPPlus は、Open Office Xml 形式 (xlsx) を使用して Excel 2007/2010 ファイルを読み書きする .net ライブラリです。
素敵なサンプル ページ: http://epplus.codeplex.com/wikipage?title=ContentSheetExample
XLSX ドキュメントの生成など、目的に応じてOpen XML SDKを使用できます。
これはオフィス文書を生成するのに便利です。特に、使用するためにオフィスをインストールする必要がないためです。
それは無料です; きれいな API であり、Microsoft によってサポートされています。例えば:
public static void CreateNewWordDocument(string document)
{
using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(document, WordprocessingDocumentType.Document))
{
// Set the content of the document so that Word can open it.
MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();
SetMainDocumentContent(mainPart);
}
}
例: http://msdn.microsoft.com/en-us/library/bb497758.aspx。スプレッドシートを使用した作業の例がここにあります。
Excel と直接対話しようとしている場合 (UI オートメーションなど); ドキュメントを生成しません。それからKeithSの答えは、私が行く方法です.
NetOfficeライブラリは、Office Primary Interop Assemblies (PIA) に代わるものです。NetOffice は、バージョンに依存しない一連の相互運用ライブラリを提供するため、アプリですべての Office バージョンをサポートできます。また、Office のどのバージョンでどのメソッドを使用できるかを示す IntelliSense が含まれています。
NetOffice は、COM 参照を追跡するのにも少し役立ちます。これは、.NET と COM の相互運用で問題になる場合があります。
どのような相互作用を求めていますか? 書くだけ?読む?すべての側面を完全に制御できますか?
特に xlsx 形式 (2007 以降) を使用している場合は、Excel ドキュメントを操作するためのサード パーティ ライブラリが多数あります。単に書き出すだけであれば、参照できるオープン ソースの実装もあります (たとえば、 Sourceforge にはExcel Writerがあります)。
ExcelLibrary は優れています。http://code.google.com/p/excellibrary/
OLE オートメーションは、アプリがクリップボード以外で通信するための Windows 標準の方法です。OLE を必要とするすべての言語にジェネリック (または強力な静的型付け) があるわけではないため、インターフェイスは必然的に非常に汎用的になります。
単純に OLE の使用を拒否する場合は、Windows スクリプト ホストを使用して GUI 自体を移動し、その方法でデータを取得するか、WinAPI DLL を使用してスクリーン スクレイピングすることができます。XLS および XLSX ファイルのドキュメント標準に基づいて、Excel ファイルの ETL を作成またはスワイプすることもできます。どのように考えても、OLE を使用することの欠点は、他の方法で Excel を操作する必要がないという極端な利点によって緩和されると思います。