- PR -

XMLデータからスプレッドシートを作成。

1
投稿者投稿内容
あっず
会議室デビュー日: 2007/06/21
投稿数: 7
投稿日時: 2007-06-25 13:02
初めまして。
ASPの処理でSQLサーバから複数のレコードセットを
取得してそのレコードセット別にExcelのシート別に出力させたい
のですが、どなたかご存知でしたら
ご教授お願い致します。

クライアント側のExcelは2003です。


Marimo
会議室デビュー日: 2003/10/15
投稿数: 15
お住まい・勤務地: 東京都
投稿日時: 2007-06-25 14:41
XMLを使用するのはDBからデータを取得した後ですか?
また、今困っているのはどのような点ですか?
あっず
会議室デビュー日: 2007/06/21
投稿数: 7
投稿日時: 2007-06-25 15:13
Marimo様

返信ありがとうございます。
説明不足ですみませんでした。
SQLサーバーから2つのクエリのレコードセットを
XMLデータとして保存してます。

Dim oXML_1
Set oXML_1 = CreateObject("Microsoft.XMLDOM")
rs.Save oXML_1, 1
nRecords_1 = rs.Fields(0).value
rs.Close

Dim oXML_2
Set oXML_2 = CreateObject("Microsoft.XMLDOM")
rs2.Save oXML_2, 1
nRecords_2 = rs2.Fields(0).value
rs2.Close

上記の異なるXMLデータをExcelのシート別に出力したいです。
Excelのスタイルシートは既存にあります。

oXML_1.transformNodeToObject oXSL, oResults

↑oXSLはスタイルシートです。oResultsは変換結果?


Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "Content-Disposition", "inline; filename=aaa.xls"
Response.Charset = "ISO-8859-1"
Response.Write oResults.XML
Response.Flush

最終的にこんなことやってクライアントにダウンロードさせたいのですが
うまくいかない状態です。

すみません説明がイマイチですが。。






Marimo
会議室デビュー日: 2003/10/15
投稿数: 15
お住まい・勤務地: 東京都
投稿日時: 2007-06-25 15:59
基本的なロジックは下記のページに書かれているものと同じでしょうか。

http://support.microsoft.com/kb/285891/ja

また、うまくいかないのはどの部分で、
どのようなエラーメッセージが出力されますか?
あっず
会議室デビュー日: 2007/06/21
投稿数: 7
投稿日時: 2007-06-25 16:12
Marimo様

お世話になっております。

おっしゃる通り

http://support.microsoft.com/kb/285891/ja

↑このサイトを基本にプログラムを組んでいるのですが
例だとクエリは一つのようです。

複数のクエリーを実行してレコードセット毎にシートを
作成する場合はどーするのか分かってません。。

エラーは出ず、二番目のシートはデータが空の状態で出力されます。

Marimo
会議室デビュー日: 2003/10/15
投稿数: 15
お住まい・勤務地: 東京都
投稿日時: 2007-06-25 17:15
今採用なさっている手法では、
2つのワークシートに出力することはできないように思われます。
(すくなくとも私には思いつきません。)

というのは、
Response.ContentType="application/vnd.ms-excel" → .Write → .Flush
によって実行されるのが
「ウェブサーバによって出力された文字列をExcelに受け取らせる。」
という処理だからです。

個人的には、サーバサイドでExcelブックを作成するか、
または、クライアントサイドでExcelブックを編集するかしたほうがよいかと存じます。
あっず
会議室デビュー日: 2007/06/21
投稿数: 7
投稿日時: 2007-06-25 17:31
Marimo様

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

確かに2つのクエリーの結果よりワークシート毎に
出力するのは無理のようでしたのでスプレッドシート側の
xslタグの制御文でデータを分けてシート別に出力する事で解決とします。

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

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