現在、Microsoft.Interop.Excelリファレンスを使用して、Excelレポートを生成するプログラムを作成しています。私の開発用コンピューターにはExcelがインストールされていますが、エンドユーザーにはOfficeがインストールされている場合とインストールされていない場合があります。Officeがエンドユーザーのコンピューターにインストールされていない場合、このツールは失敗しますか、それともこの相互運用サービスは実際のアプリケーションとは別のものですか?
7 に答える
.xlsx (Office 2007 以降) ファイルの作成に興味がある場合は、幸運です。Office 2007+ は OpenXML を使用します。より適切な説明がないため、.xlsx という名前の zip 内の XML ファイルです。
Excel ファイル (2007 以降) を取得し、名前を .zip に変更すると、開いて見ることができます。.NET 3.5 を使用している場合は、System.IO.Packaging ライブラリを使用してリレーションシップと zipfile 自体を操作し、linq to xml を使用して xml (または、より快適な場合は DOM のみ) を操作できます。
それ以外の場合は、zip ファイルを操作するための強力なライブラリであるDotNetZipをお勧めします。
OpenXMLDeveloperには、OpenXML に関する多くのリソースがあり、そこでさらに多くのリソースを見つけることができます。
.xls (2003 以下) が必要な場合は、サード パーティのライブラリを調べるか、Excel をインストールせずにこれを実現するためにファイル形式を自分で学習する必要があります。
サーバー/PC に Excel がインストールされているか、外部ツールを使用しない限り (Excel Interop を使用せずに可能です。「 C# から Excel (.XLS および .XLSX) ファイルを作成する」を参照)、失敗します。相互運用機能を使用するには、Excel をインストールする必要があります。
Excel 2007 を使用している場合は、EPPlus をお試しください。範囲、セルスタイル、グラフ、図形、写真、その他多くのものをサポート
いくつかのオプションがあります:
- NPOI - 無料でオープン ソースです。
- Aspose - 無料ではありませんが、堅牢です。
- Spreadsheet ML - スプレッドシートを作成するための基本的な XML.
相互運用機能を使用するには、Excel を実行しているマシンに Excel をインストールする必要があります。サーバー側のソリューションでは、これはひどいものになります。代わりに、Excel をインストールせずに Excel ファイルを作成できる上記のようなツールを使用する必要があります。
ユーザーが Excel を持っていなくても、Excel を読み取るツール (Open Office など) を持っている場合、明らかにそれを開くことができます。Microsoft には、 Excelを持っていないユーザーが利用できる無料のExcel ビューアーがあります。
相互運用性は何か他のものを呼び出します。それは相互運用性アセンブリであるため、何かと相互運用しています...この場合、Excel、実際にインストールされている Excel です。
この場合、はい、Excel に依存しているため、実行に失敗します。Excel 関数を呼び出しているだけです。彼らがそれをインストールしていない場合...運が悪い。
2007 ファイル形式で問題がなければ、Excel を使用せずに生成する方法があります。いくつかを次に示します。
私が言ったように、これは2007 年のフォーマットです。
OleDB を使用すると、Excel ファイルを非常に簡単に作成、読み取り、編集できます。詳細については、MSDN のドキュメントを参照してください。
http://msdn.microsoft.com/en-us/library/aa288452(VS.71).aspx
私は OleDB を使用して Excel ファイルから読み取ったことがあり、それらを作成できることは知っていますが、直接行ったことはありません。
FileHelpersライブラリの ExcelStorage クラスを使用できます。これは非常に簡単でシンプルです。マシンに Excel 2000 以降がインストールされている必要があります。
FileHelpers は、ファイル、文字列、またはストリーム内の固定長または区切りレコードからデータをインポート/エクスポートするための無料で使いやすい .NET ライブラリです。