C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: ASP.NETにてエクセルを使用出来ない


(過去ログ 90 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■54073 / inTopicNo.1)  ASP.NETにてエクセルを使用出来ない
  
□投稿者/ TAMA (7回)-(2010/10/04(Mon) 18:11:31)

分類:[.NET 全般] 

いつもお世話になっております。
困った事象が発生したためご質問させていただきます。

■環境■
ASP.NET 4.0
Microsoft Visual Web Developer 2010
開発端末にインストールされているOffice
 Office Personal Editon2003(Excel2003)
開発サーバにインストールされているOffice
 Office Personal Editon2003(Excel2003)
 Office Personal Editon2007(Excel2007)

■やりたい事■
当方の開発しているWEBアプリケーションにて
帳票出力をエクセルで行いたい。

■問題■
「参照の追加」にて「Microsoft Excel 11.0 Object Library」を指定すると、
以下の三つの参照設定が追加されますが、黄色の警告マークが付いており、
ビルドエラーが発生します。(もちろん、ASP.NETでエクセルも使えません)
・Excel
・Microsoft.Office.Core
・VBIDE

ビルドした際の警告・エラーメッセージは以下の通りです。

警告 2 タスクは 2 つの場所で "AxImp.exe" を探しました。1) SdkToolsPath に基づいて生成された "C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\" プロセッサ固有のディレクトリ 2) SDKToolsPath プロパティで指定された"C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\" の下にある x86 固有のディレクトリ。次のいずれかを行うことによって問題を解決できる可能性があります: 1) "SDKToolsPath" プロパティを Microsoft Windows SDK の場所に設定する。

エラー 3 タスクは SdkToolsPath "C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\" またはレジストリ キー "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A" を使用して "AxImp.exe" を見つけられませんでした。SdkToolsPath が設定されていること、SdkToolsPath の下の適切なプロセッサ固有の場所にツールが存在すること、および Microsoft Windows SDK がインストールされていることを確認してください。

警告 4 参照コンポーネント 'Microsoft.Office.Core' が見つかりませんでした。

警告 5 参照コンポーネント 'VBIDE' が見つかりませんでした。

警告 6 参照コンポーネント 'Excel' が見つかりませんでした。

※参照設定で上記三つの参照のプロパティを見てみると「パス」の項目が空白になっていました。

■やってみた事■
・開発端末でエクセルの再インストール⇒問題解決せず
・プロジェクトのプロパティの参照パスでフォルダーを追加しようとしましたが、
 そもそもどのファイルへのパスを設定すればいいのかが不明です。
引用返信 編集キー/
■54090 / inTopicNo.2)  Re[1]: ASP.NETにてエクセルを使用出来ない
□投稿者/ やじゅ (1755回)-(2010/10/04(Mon) 23:47:08)
やじゅ さんの Web サイト
No54073 (TAMA さん) に返信
> ■やりたい事■
> 当方の開発しているWEBアプリケーションにて
> 帳票出力をエクセルで行いたい。

サーバー側で Microsoft Excelを動作させるのはライセンスや技術面で問題になりそうです。
http://support.microsoft.com/kb/257757/ja

サーバー側での Excel 生成するのならサードパーティ製のコンポーネントを使うか
オープンソースのNPOIあたりを使った方がいいと思います。
http://www.adv.co.jp/products.htm
http://www.xlsoft.com/jp/products/SSG/
オープンソースのNPOI
http://d.hatena.ne.jp/okazuki/20091128/1259405232
引用返信 編集キー/
■54097 / inTopicNo.3)  Re[2]: ASP.NETにてエクセルを使用出来ない
□投稿者/ TAMA (8回)-(2010/10/05(Tue) 08:43:37)
No54090 (やじゅ さん) に返信
> サーバー側で Microsoft Excelを動作させるのはライセンスや技術面で問題になりそうです。
> http://support.microsoft.com/kb/257757/ja
>
> サーバー側での Excel 生成するのならサードパーティ製のコンポーネントを使うか
> オープンソースのNPOIあたりを使った方がいいと思います。
> http://www.adv.co.jp/products.htm
> http://www.xlsoft.com/jp/products/SSG/
> オープンソースのNPOI
> http://d.hatena.ne.jp/okazuki/20091128/1259405232

素早いご回答ありがとうございます。

マイクロソフトのHPでやり方が紹介されていたので、技術的に問題はないのかと思っていました。
http://support.microsoft.com/default.aspx?scid=kb;ja;306023
またこちらにもやり方が載っていました。
http://www.atmarkit.co.jp/fdotnet/dotnettips/717excelfile/excelfile.html

どうしてもうまくいかなければご教授いただいたNPOIを使用したいと思います。

ビルドエラーを解消する方法をご存知の方がいらっしゃいましたら、
何卒ご教授お願いいたします。
引用返信 編集キー/
■54102 / inTopicNo.4)  Re[3]: ASP.NETにてエクセルを使用出来ない
□投稿者/ 魔界の仮面弁士 (1850回)-(2010/10/05(Tue) 10:37:09)
No54097 (TAMA さん) に返信
> マイクロソフトのHPでやり方が紹介されていたので、技術的に問題はないのかと思っていました。
> またこちらにもやり方が載っていました。
それらは、「ASP.NET」での実行例ではありませんよね。


まず、『DCOM』等の必要な権限設定を与えれば、“技術的には” ASP.NET でも実行可能です。
しかしだからといって、問題が無いという意味にはなりません。

実際に ASP.NET で使うとなると、先の URL で述べられているように多くの問題が壁となります。

>>サーバー側で Microsoft Excelを動作させるのはライセンスや技術面で問題になりそうです。
>>http://support.microsoft.com/kb/257757/ja

『Office アプリケーションは、オートメーションから起動された場合でも、
 実行時にはユーザー ID を使用します。
 (中略)
 Office アプリケーションを起動できた場合でも、ユーザー プロファイルがなければ、
 その他の関数が適切に動作しないこともあります。』

『Office アプリケーションでは、分散コンポーネントが直面するセキュリティ問題に関しては
 考慮されていません。Office では、着信要求の認証を行いません。』

『非対話型デスクトップでのモーダル ダイアログ ボックスは閉じることができません。
 これが原因となり、そのスレッドが応答しない (ハング) ままになります。』

『マルチクライアント環境で構成されている場合には競合が発生する可能性があります。』

『Office はサーバーサイドでの使用に合わせて設計またはテストされていないため、
 Office をサーバーサイドで実行した場合、一般に安定性は保証できません。』

『技術的な問題の他にも、ライセンスの問題を考慮する必要もあります。
 (中略)
 ライセンスを受けていないワークステーションに Office 機能を提供することは、
 使用許諾契約書 (EULA) には含まれていません。』

『Office の設計には制約があるため、Office の構成に変更を加えても
 すべての問題を解決するには不十分です。』


ゆえに安全策をとるのであれば、
 (1) 最初からサーバーサイドの実行を考慮して設計された製品(SpreadSheetGear、ExcelCreator 等)を用いる。
 (2) OLE DB 経由で、Jet/ACE-IISAM の Excel インポート/エクスポートを使って読み書きする(Excel 本体は不要)。
 (3) IIS とは別に、Excel 変換用のアプリをデスクトップセッションで動作させるようにし、
  ASP.NET とは切り離されたプロセスとして処理する。
 (4) サーバーサイドからは、データ部のみをクライアントにダウンロードさせるように、Excel 形式への変換は、
  別のクライアントサイドのプログラム(VB.NET、VBScript、Excel VBA 等)を使って行うようにする。
 (5) *.xls 形式ではなく、*.xml、*.csv、*.slk、*.html、*.xlsx といった、
  Excel 本体を使わずに読み書きが可能な形式で代用する。
などといった、別の方向性を探すことをおすすめします。


そうしたデメリットを考慮したうえで、なお Excel をオートメーション利用したいのであれば、
「DCOM ASP.NET Excel」といったキーワードで bing なり google なりで探してやれば、
いくつかの実例が見つかるかと思います。今回の解決策となるかどうかは保証できませんが。
引用返信 編集キー/
■54115 / inTopicNo.5)  Re[4]: ASP.NETにてエクセルを使用出来ない
□投稿者/ TAMA (9回)-(2010/10/05(Tue) 14:55:57)
お礼

やじゅ様、的確な回答をありがとうございました。
魔界の仮面弁士様、丁寧な回答をありがとうございました。

結果としましては、魔界の仮面弁士様にご提示いただいた

>  (5) *.xls 形式ではなく、*.xml、*.csv、*.slk、*.html、*.xlsx といった、
>   Excel 本体を使わずに読み書きが可能な形式で代用する。

のうち、XMLスプレッドシートを利用した方法を採用いたします。

具体的には以下のHPに記載されている方法を行います。
http://codezine.jp/article/detail/194
(オートメーション機能を利用しないExcel形式でのWeb帳票印刷)

あらかじめフォーマットを用意しておく必要があり、
データや書式をプログラムで動的に自由自在に操るということには
不向きな感もありますが、当面は上記の方法で頑張ってみます。

ご回答いただき真にありがとうございました。

※参照の追加でビルドエラーが発生した件につきましては相変わらず解決の糸口も見えていませんが、
オートメーション機能は使用しないという前提で開発を行おうと思いますので、当質問はクローズいたします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -