- PR -

excelからservletを呼び出す方法

1
投稿者投稿内容
matu
ベテラン
会議室デビュー日: 2002/09/01
投稿数: 95
お住まい・勤務地: 東京
投稿日時: 2003-05-02 11:28
 こんにちは。松崎と申します。

 以前、servletからexcelのファイルを出力するという話題が
ありましたが、
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1678&forum=12

 さらに、excelからservletのメソッドをcallするという事は
簡単にできるのでしょうか?

 どなたか方法をご存知でしたらご教授下さい。よろしくお願い
致します。
latte
常連さん
会議室デビュー日: 2002/11/07
投稿数: 38
投稿日時: 2003-05-02 12:14
ActiveXのオブジェクトを生成してアクセスというのでは
だめでしょうか?

XMLHTTPを使えば、アクセスできますけれども。
matu
ベテラン
会議室デビュー日: 2002/09/01
投稿数: 95
お住まい・勤務地: 東京
投稿日時: 2003-05-02 12:39
 latteさんこんにちは。

 XMLHTTPについてインターネットで検索してみたのですがIE6から
新たに追加された機能ですね^^知りませんでした。ありがとうご
ざいます。

 でもEXCELからもXMLHTTPが使えるのですか?ちなみにIEからです
とJavaScriptの部分でXMLHTTPを使用して動的にservletからデータ
を取得できるということですよね?
 これができるとブラウザとの動的なインターフェースが取れるので
結構便利です。
 ちなみにXMLHTTPがActiveXオブジェクトと言う事なのでしょうか?
ActiveXについては全く知識不足なので・・

 理想の形態はservletからXML形式で出力するメソッドを用意して
次世代のEXCELや(次のEXCELはXML正式対応ですよね^^?)その他
のアプリケーションでも共通して使えるservletを作りたいなと思っ
ていました。
matu
ベテラン
会議室デビュー日: 2002/09/01
投稿数: 95
お住まい・勤務地: 東京
投稿日時: 2003-05-02 12:57
 すみません。。

 IE6からの新しい機能ではないみたいですね・・MSXMLの中に
ある一部の機能と受け止めれば良いでしょうか。

 ちなみに色々検索してみたのですが、具体的にJavaScriptで
servletをコールしている例など紹介しているサイトなどご存知
であればご教授下さい。よろしくお願いします。
latte
常連さん
会議室デビュー日: 2002/11/07
投稿数: 38
投稿日時: 2003-05-02 17:53
微妙に違うかもしれませんが、大体こんな感じだと思います

--- Excel VBA (HMLHTTPでServletへアクセス) ----------------------------
Dim oXmlHttp As Object
Set oXmlHttp = CreateObject("Microsoft.XMLHTTP")
oXmlHttp.Open "POST", "http://localhost:8080/hoge/foo", False
oXmlHttp.send ("<root><hoge1>hogehoge</hoge1></root>") 'Servletへアクセス
execute = oXmlHttp.responseText 'Servletから結果を受け取る部分
-----------------------------------------------------
Excelの参照設定で、msxml.dllを見るようにします。
上の感じだと、XMLの文字列がServletに渡ります。

Servlet側では、リクエストからStreamを取って、
そいつをXMLパーサに食わせて処理をする。。。とか。。。
--- Servlet データ受け取り部分------------------------
DOMParser parser = new DOMParser();
parser.parse(new InputSource(request.getInputStream()));
Document document = parser.getDocument();
///// documentに対してなんらかの処理をする
----------------------------------------------------
上のコードでは、ExcelからXML形式でデータをSerlvetへ
渡し、DOMでパース、処理をします。

で、Excelになんらかのデータを返したければ、
HttpServletResponseでXMLの形でデータを返せば、
Excel側でそれをDOMなどで解析して、、、などができると思います。
--- Servlet Excelへデータを返す部分 -------------
response.setContentType("text/xml; charset=UTF-8" );
response.setHeader("Content-Language", "UTF-8");
response.setHeader("encoding", "UTF-8");
PrintWriter out = response.getWriter();
out.println("<root><foo>foofoo</foo></root>");
out.flush();
out.close();
out = null;
-------------------------------------------

--- Excel Servletからの結果をなにか処理 -----
Dim oDom As Object
Set oDom = CreateObject("Microsoft.XMLDOM")
oDom.async = False
oDom.loadXML (szXml) 'Servletからの結果を渡す
////なにか処理
----------------------------------------------

間違っているところや、matuさんの望んでいる
ことと違うかもしれませんが、以前こんな感じの
コードを書いたことがあります。

次世代のExcelでも使えるかは、すみません、
ちょっとわかりません。。。

[ メッセージ編集済み 編集者: latte 編集日時 2003-05-02 18:08 ]
matu
ベテラン
会議室デビュー日: 2002/09/01
投稿数: 95
お住まい・勤務地: 東京
投稿日時: 2003-05-02 20:48
 latteさんこんばんは。

 非常に解りやすい例を頂いて感謝ですm(__)m

 戻り値を取得する側が若干見えなかったのですが
おそらくEXCELのVBA側でjavaで言うインプットバッ
ファストリームの様に考えて受け取れば良いのです
ね。ちょっと試してみます。

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

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