« Captain's Blood | メイン | C#でヒアドキュメント »

2005年11月25日

仕事の周辺 » .NET

C#でエクセルファイル作成

CSVを書き出しているプログラムで、コード別にCSVを複数枚書き出すように変更して欲しいといわれ、ボタン一つで対応させるため、CSVからエクセルのファイルに変更してみようと思ったところ、予想外の深みにはまる。
Webのサンプルを覗きまわった限り、CSVより簡単?という印象だったんですけど。
まず、最初のエラーが「型または名前空間名 'Excel' が見つかりませんでした。ディレクティブを使うかアセンブリ参照を使ってください。」というやつ。usingし忘れた時によく出るエラーですが、色々試してもエラー変わらず、ググッてこちらのサイトのおかげで解決。Webから拾ってきたサンプルに付属していたDLLは Interop.Excel.dll でこれを参照追加するとusingなしでもエラーが出ない。COMから参照追加してコピーされたDLLは Microsoft.Office.Interop.Excel.dll という名前になっている。このあたりが原因?
で、無事エクセルの空ファイルができたので、ASP.NETに貼り付けたところ、今度はアクセス権がない、というような実行エラー。こんどはこちらのサイトを参考にWeb.configに<identity impersonate ="true">を追加して解決。しかし、このサイトに嫌なことが書かれてます。作るのは簡単だがExcel.exe のインスタンスgo away するのが難しいって(^^;)。書いてある通りタスクマネージャを確認すると、エクセルが複数立ち上がってるではありませんか。サーバー側にファイルができるわけで、CSVをダウンロードさせるのとはかなり違いそうですね。ってことでせっかく方法書いてもらってますが、いままで通りCSVでいくことにしました。

投稿者 idic : 2005年11月25日 22:07

コメント

コメントしてください

サイン・インを確認しました、 さん。コメントしてください。 (サイン・アウト)

(いままで、ここでコメントしたとがないときは、コメントを表示する前にこのウェブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


情報を登録する?