DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ASP.NETでEXCELを印刷する時の問題

環境/言語:[OS Windows 2000 VS2005]
分類:[ASP.NET]

ASP.NETの質問ですが、印刷でExcelを使っています。
プログラムのデバックでは印刷が可能なのですが、
Web発行したサイトで
印刷をかけ、しばらくすると下記エラーがでてしまいます。
Dim xlApp As New Excel.Applicationの場合

CLSID {00024500-0000-0000-C000-000000000046} を含むコンポーネントの COM クラス ファクトリを取得中に、次のエラーが発生しました: 80080005。
説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。

また
Dim xlApp As Excel.Application
xlApp = CreateObject("Excel.application")
の場合は
ActiveX コンポーネントを作成できません。
がでます。

それで色々と1日以上サイトで調べた結果、
1.ASPでのエクセルでの印刷はサポートされていない事
2.DCOMのEXCEL権限の設定をしないといけない事
が解りました。
OSが2000の場合dcomcnfgを実行すると
分散COMの構成のプロパティが立ち上がるのですが、
個別設定というのはないのでしょうか。(XPにはありました。)
MicroSoftExcelアプリケーションを選択しプロパティところを押しても
この操作を正しく終了しました。
のメッセージが表示されます。
全て同一設定なのかと思い、
既定のセキュリティタブで
既定のアクセス許可にEveryOne
既定の起動アクセス許可にEveryOne
既定の構成アクセス許可にEveryOne
をそれぞれ設定しました。
ですが、同じエラーに苦しめられています。
ネットで探しても何が足りないのかも、見つけられない状態です。
ASPでEXCELを使う事は今までなかったものでしたから
出来ないのかなと思っていましたが、こういう理由があるのですね。
あるサイトではASP+EXCELでもできると書かれていたりしました。
ただ方法は書かれていませんでした。
現状,プログラムの大幅変更は出来ない状態です。

どなたかやり方を御教授しては頂けないでしょうか?
宜しくお願い致します

参考
>>Jet 用の OLE DB プロバイダで Excel のデータを扱うことができます。
JET
http://support.microsoft.com/kb/316934/ja
問題点
http://support.microsoft.com/kb/257757/ja
■No25737に返信(ゆきとさんの記事)
> どなたかやり方を御教授しては頂けないでしょうか?
> 宜しくお願い致します

  ただ単にプリンターに対する権限が無いだけだと思いますが。

  例えば・・・
  http://wakux2.com/blog/archives/2005/05/aspnetexcel.php

  こういう事例もありますので、権限設定を検討して下さい。

※ 『ASP.NET 権限』で検索すると、結構ヒットします・・・

以上。
■No25740に返信(オショウさんの記事)
> ■No25737に返信(ゆきとさんの記事)
>>どなたかやり方を御教授しては頂けないでしょうか?
>>宜しくお願い致します
>
>   ただ単にプリンターに対する権限が無いだけだと思いますが。
>
>   例えば・・・
>   http://wakux2.com/blog/archives/2005/05/aspnetexcel.php
>
>   こういう事例もありますので、権限設定を検討して下さい。
>
> ※ 『ASP.NET 権限』で検索すると、結構ヒットします・・・
>
> 以上。

オショウ様ありがとうございます。権限を設定した後再起動していなかったため
反映されていなかったようです。
エラーは出なくなりましたが、今別の問題を抱えています。
プログラムの作りの問題なのだと思いますが、
現在、FTPからEXCELファイルをCドライブにダウンロードさせてサーバー側
から操作するといった事をしています。
Dim wc As New WebClient()
'FTPサーバーからダウンロードする
wc.DownloadFile( _
oCmn.GetWebConfigValue("URLPath") & psFtpFileName, _
oCmn.GetWebConfigValue("LocalPath") & psLocalFileName _
)

xlFilePath = oCmn.GetWebConfigValue("LocalPath") & psExcelFile
Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
Dim xlBook As Excel.Workbook = xlBooks.Open(xlFilePath)
URLPathにはFTPサーバーのパス
LocalPathにはC:\が指定されています。
WEB発行した画面で実行すると印刷もプレビューも出来ないので困っています。
サーバーからクライアントのEXCELを直接操作する方法自体が無理なのでしょうか?
御教授ください。
■No25745に返信(ゆきとさんの記事)
> サーバーからクライアントのEXCELを直接操作する方法自体が無理なのでしょうか?
> 御教授ください。

  できません。

  あくまでクライアント側からサーバーにアップさせてサーバーサイドで
  加工し、結果をまたクライアントに戻すか・・・

  サーバーのWebページ上にActiveXを配置し、クライアントへダウン
  ロードさせ、そのActiveXに加工させるとか・・・

  サーバー側が知る必要があるならば、ActiveXと別セッションで通信さ
  せて情報交換する必要があろうかと・・・

※ Web使った、サーバーサイド・クライアントサイドの区分けを明確
  にしないと、無茶苦茶なことになろうかと・・・

以上。
■No25749に返信(オショウさんの記事)
> ■No25745に返信(ゆきとさんの記事)
>>サーバーからクライアントのEXCELを直接操作する方法自体が無理なのでしょうか?
>>御教授ください。
>
>   できません。
>
>   あくまでクライアント側からサーバーにアップさせてサーバーサイドで
>   加工し、結果をまたクライアントに戻すか・・・
>
>   サーバーのWebページ上にActiveXを配置し、クライアントへダウン
>   ロードさせ、そのActiveXに加工させるとか・・・
>
>   サーバー側が知る必要があるならば、ActiveXと別セッションで通信さ
>   せて情報交換する必要があろうかと・・・
>
> ※ Web使った、サーバーサイド・クライアントサイドの区分けを明確
>   にしないと、無茶苦茶なことになろうかと・・・
>
> 以上。
オショウ様ありがとうございます。
やはり無理なのですね。
作成されたロジックには直接触るように組み込まれていました。
WEB系の無知な開発は本当に危険ですね。

プレビューなどの観点もあり、
最初の私の提案どおり再度、最初から私一人でCryStalReportで組む事になりました。
本当にありがとうございました。

この会社辞めるかも(笑)
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板