@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

(ASP.NET)EXCELファイルの多重アクセス方法について

1
投稿者投稿内容
アルエット
会議室デビュー日: 2004/02/10
投稿数: 4
投稿日時: 2004-03-08 16:51
こんにちは。初めまして。アルエットと申します。
ASP.NETで開発を行っているのですが、壁にぶつかり
困っています。

現在、ASP.NETでEXCELを作成→表示する機能を作成していて、
クライアント側よりWEB画面のボタンを押すことによって
@EXCELファイルをCreateObject("Excel.Application")〜SaveAsで
 サーバーに作成(名前はユニーク)
Ajavascriptのwindow.open命令をResponse.Writeで出力
 EXCELファイルをクライアントのウインドウで開く
といった処理を行っているのですが、
EXCELウインドウが出ている状態でもう一度ボタンを押し、
EXCELの作成を行うとすると処理が止まってしまいます。

また2台のパソコンからEXCELを作成するサーバにアクセスし、
一台がEXCELファイルを作成し開いてる時に
もう一台が新たにEXCELファイルを作成しようとしても同じ現象がおきます。

サーバー側でエラーメッセージを確認すると
「ActiveXを作成できませんでした 」
といったメッセージが出力されています。

EXCELウインドウを閉じさえすれば、EXCELファイルの作成・表示は可能です。
(正常終了します)
デバックで見る限り、CreateObject("Excel.Application")の所で
固まってしまっているようなのですが・・・・。

このままだと一人がEXCELファイルを開いている時は他の人間は
EXCELを作成できないといった事態が発生してしまいます。

EXCELファイルへの多重アクセスの方法、
もしくは根本的な間違い・回避策等があればご教授願います。

(サーバ)
OS:Windows2003
Office2000
IIS6.0

(クライアント)
OS:Windows2000
Office2000


Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-08 17:02
回答ではありません。

 クライアントへは、ファイルをオープンしてストリームに取り込み、それをresponse.writeか何かでながしていますか?そうすると、クライアントが長時間、保存/実行/キャンセルの画面を出していると、ファイルが消えてしまいます。…という現象が、私の方で発生しています。

 私の方では、セッションが切れるタイミングでファイルを削除するようにしました。ファイルをresponseで吐き出すのではなく、ファイルへのリンクを張ったページを表示するようにしました。
Lichtenstein
ベテラン
会議室デビュー日: 2003/11/06
投稿数: 61
投稿日時: 2004-03-08 18:15
私も、Jittaさんと同様の回避方法を行った事があります。
しかし、それでもダメなケースが多々ありました。どうしても原因を特定できないため、ユーザに決まり切った順番でブラウザを操作するようお願いするしかありませんでした。(出来たり出来なかったりする)

Office2000との事ですが、かなり茨の道なので止めた方がよろしいかと。(回答になってなくてごめんなさい)
http://support.microsoft.com/default.aspx?scid=KB;JA;257757
アルエット
会議室デビュー日: 2004/02/10
投稿数: 4
投稿日時: 2004-03-08 19:01
Jittaさん。Lichtensteinさん。

今現在の処理はjavascriptのwindow.open('サーバ上のEXCELファイルパス')
をResponse.Writeで書き出してEXCELを出力しています。
これはリンクと考えてよろしいのでしょうか?

あれからこちらでいろいろ試したのですが、どうやら
EXCELを作成するマシンがoffice2000の場合に起きる現象で
OfficeXPにすると問題なく処理を行うことができました。

それだけが問題かは分かりませんが、Lichtensteinさんのリンクを
見る限り、まだまだASP.NETで
Office操作は問題があるということでしょうか・・・・。

ともあれofficeのバージョンアップで問題がなければ、XPへの
移行で当面の問題は対処したいと思います。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)