質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.00%

Excelファイルを出力する方法(※Microsoft.Office.Interop.Excelを使用しない)

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 11K+

eureka7

score 15

ASP.NETでExcelファイルを作成し、作成したファイルをダウンロードする処理を作成しているのですが、IISサーバーをインストールしているサーバに"Microsoft.Office.Interop.Excel"関連のdllが存在しないためエラーとなってしまいました。

ライセンスの関係でIISサーバーをインストールしているサーバにOfficeをインストールしないことになったのですが、"Microsoft.Office.Interop.Excel"のdllを使用しないでExcelファイルを出力する方法を調べてみたのですがそれらしい物は見当たりませんでした。

ご存知の方いらっしゃいましたらご教授の程よろしくお願い致します。

**(2016.09.06 18:13 追記)**
KoichiSugiyamaさん、twckさんご回答ありがとうございます。

極力VisualStudioで標準でインストールされているライブラリをしようして製造をしたいと考えていますので、他に手が無い場合は参考にさせて頂きます。

色々と調べてみたのですが、VisualStudioで標準でインストールされているライブラリのみを使用してExcelファイルを出力する方法は不可能なのでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+5

.NET で EXCEL Book を読み書きするライブラリは多数あります。
古いですが私が2年前に調べたリストを記載します。

Open XML SDK

  • Microsoft社製。
  • Excel 2003 以前の形式(.xls):非対応
  • ローレベルな部分の操作ができるので、他のライブラリで出来ない事も出来る。
  • その代わり学習コスト、開発コストが非常に高くつくので、全くお勧めはしない。

ClosedXML

  • ライセンス:MIT License
  • Excel 2003 以前の形式(.xls):非対応
  • COM の Microsoft Excel ObjectLibrary の代わりを目指して開発されたらしいので、Microsoft.Office.Interop.Excel からの移植コストは断然優れていると思われる。

EPPlus

  • ライセンス:LGPL
  • Excel 2003 以前の形式(.xls):非対応
  • 図形、画像の挿入など機能が豊富。

NPOI

  • ライセンス:Apache License 2.0
  • Excel 2003 以前の形式(.xls):対応
  • JAVA の Excel 操作ライブラリである Apache POI から派生しており、ネット上には Apache POI の記事が多数あるため、サンプルコードを見つけやすい。

Koogra

  • ライセンス:MIT License
  • Excel 2003 以前の形式(.xls):対応
  • 開発が止まってる?

Microsoft.Office.Interop.Excel を使用しているプログラムが既にあるのであれば、移植コストが少ない ClosedXML がおすすめです。

私が .NET で EXCEL Book の操作をし始めた頃は まだ Excel 2003 以前の形式(.xls) も多く使われていたため NPOI を選択しましたが、Excel 2003 のサポートが 2014年4月に切れたので、現在であれば EPPlus を選んでいたかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/09/06 22:18

    (2016.09.06 18:13 追記)に対する回答

    .xlsxファイルの中身は Zip圧縮した XMLファイルです。
    拡張子を .xlsx から .zip に変えて 解凍すれば中身を確認できます。

    なので Office Open XML の仕様を理解すれば、Visual Studio(.Net Framework)の標準機能で XMLを作って Zip圧縮すれば理論的には可能でしょう。
    要は ClosedXML や NPOI と同じようなものを自分で作ればいいわけです。

    おそらく数年は掛かるでしょうから Open XML SDK の数百倍お勧めしませんけど。

    キャンセル

  • 2016/09/09 07:51

    アドバイスありがとうございます!
    今回は複雑なブックを作成する必要が無かったため、ClosedXMLは使用しませんでしたが次回製造するとき使用したいと思います。

    キャンセル

checkベストアンサー

+1

実際に最後まで試した事がないので恐縮ですが、一応標準の機能だけでできるようです。
ACE OleDb で Excel のブック作成

正直、ClosedXMLの方が遥かに手軽です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/09/09 07:49

    ACE OleDbでExcelのブックを作成することが出来ました!
    アドバイスありがとうございます。

    キャンセル

+1

私自身は使ったことがないのですが、ClosedXMLというライブラリでできるようです。

サーバサイドでExcelブックを生成するいくつかの方法 も参考にしてみてください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/09/09 07:51

    アドバイスありがとうございます!
    今回は複雑なブックを作成する必要が無かったため、ClosedXMLは使用しませんでしたが次回製造するとき使用したいと思います。

    キャンセル

0

前のお二人が書かれている、ClosedXMLは、VisualStudioのNuGetで取得できるパッケージです。
ClosedXMLはMicrosoftが作ったOpenXMLを使いやすくしたものです。(内部でOpenXMLが呼ばれます)
安定性とかも支障ないと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/09/09 07:50

    アドバイスありがとうございます!
    今回は複雑なブックを作成する必要が無かったため、ClosedXMLは使用しませんでしたが次回製造するとき使用したいと思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.00%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる