web-dev-qa-db-ja.com

オフィスなしでC#からExcelファイルを作成する

現在Microsoft.Interop.Excelリファレンスを使用して、Excelレポートを生成するプログラムを作成しています。私の開発用コンピューターにはExcelがインストールされていますが、エンドユーザーにはOfficeがインストールされている場合とされていない場合があります。 Officeがエンドユーザーのコンピューターにインストールされていない場合、またはこの相互運用サービスが実際のアプリケーションから分離されている場合、このツールは失敗しますか?

54
tbischel

Excelがサーバー/ PCにインストールされているか、外部ツール(Excel Interopを使用しなくても可能です。 C#からExcel(.XLSおよび.XLSX)ファイルを作成 )、失敗します相互運用機能を使用するには、Excelがインストールされている必要があります。

35
Adriaan Stander

.xlsx(Office 2007以降)ファイルの作成に興味がある場合は、幸運です。 Office 2007+はOpenXMLを使用します。これは、より適切な説明がないため、.xlsxという名前のZip内のXMLファイルです。

Excelファイル(2007以降)を取得し、ファイル名を.Zipに変更すると、ファイルを開いて確認できます。 .NET 3.5を使用している場合は、System.IO.Packagingライブラリを使用してリレーションシップとzipfile自体を操作し、linq to xmlを使用してxml(またはより快適な場合はDOMのみ)を再生できます。

それ以外の場合は、id reccomend DotNetZip 、zipファイル操作用の強力なライブラリです。

OpenXMLDeveloper にはOpenXMLに関する多くのリソースがあり、さらに多くのリソースがあります。

.xls(2003以下)が必要な場合は、サードパーティのライブラリを調べるか、Excelをインストールせずにこれを実現するために自分でファイル形式を学習する必要があります。

40
Aren

EPPlus をお試しください。Excel2007を使用している場合。範囲、セルスタイリング、グラフ、図形、写真、その他多くの機能をサポートしています。

28
Jan Källman

いくつかのオプションがあります。

相互運用機能を使用するには、Excelを実行元のマシンにインストールする必要があります。サーバー側のソリューションでは、これはひどいものになります。代わりに、ExcelをインストールせずにExcelファイルを作成できる上記のようなツールを使用する必要があります。

ユーザーがExcelを持っておらず、Excelを読み取るツール(Open Officeなど)を持っている場合、明らかにそれを開くことができます。 Microsoftには、Excelを持っていないユーザーが利用できる無料の Excelビューア があります。

11
Thomas

相互運用機能は他の何かを呼び出します。これは相互運用性アセンブリです。そのため、ユーザーは何かと相互運用しています。この場合は、Excel(実際にインストールされているExcel)です。

この場合、はい、Excelではdependsなので、実行に失敗します。Excel関数を呼び出しているだけです。彼らがそれをインストールしていない場合...運が悪い。

2007のファイル形式に問題がなければ、Excelを使用せずに生成する方法がいくつかあります。

私が言ったように、これは2007形式です。

10
Nick Craver

OleDBを使用すると、Excelファイルを非常に簡単に作成、読み取り、編集できます。詳細については、MSDNドキュメントを参照してください。

http://msdn.Microsoft.com/en-us/library/aa288452(VS.71).aspx

OleDBを使用してExcelファイルから読み取り、作成できることはわかっていますが、実際には実行していません。

7
Justin

FileHelpers ライブラリのExcelStorageクラスを使用できます。非常に簡単でシンプルです。マシンにExcel 2000以降がインストールされている必要があります。

FileHelpersは、ファイル、文字列、またはストリームの固定長または区切りレコードからデータをインポート/エクスポートするための無料で使いやすい.NETライブラリです。

3
Dean Kuga