- ベストアンサー
webからの帳票表示
現在、以下の方法でWebより帳票(Excel)を表示しています。 1.ASPにてSQLを実行し、データベース(Oracle8i)よりレコードセット を取得する。 2.取得したレコードセットを、XMLで保持する。 3.XMLを、XSLで指定した形式で、Htmlに変換する(JavaScriptの transformNodeで) 4.変換したHtmlを、クリップボードに退避する。 5.JavaScriptのActiveXObject("Excel.Application")で、 Excelを起動する。 6.Workbooks.Open("[テンプレート名]")で、Excelテンプレート を立ち上げる。 7.ExcelのBookに、クリップボードに退避したHtmlを貼り付ける。 以上の手順を踏むと、ExcelにHtmlで書かれたとおりの表が表示される 仕組みです。 しかし、この方法だと、大量のデータ件数(横50列、1000件以上)で ある場合、貼り付けに非常に時間がかかり、タイムアウトしてしまいます。 (ExcelがHtmlを解釈するのに時間がかかるせいだと思うのですが・・・) せめて横50列以上、2万件以上のデータ量に耐えられる仕組みにしなければ なりません。 以下の仕様は極力守りつつ、なにか良い方法はないでしょうか。 a.データはなるべくXMLから取得したい b.帳票を出力するツールはExcelとしたい aについては、データはレコードセットでも構いません。 bについては、何か他に良い帳票ツールがあれば教えて下さい。 どうぞよろしくお願いします。 ●環境 IE:5.5 Excel:97(SR-2) DB:Oracle8i
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
以下のようにすれば画面が表示された後で、クライアント側でExcelが立ち上がり、レコードが記入されていくと思います。 ・ ・ ・ <SCRIPT LANGUAGE="VBScript"> Sub CreateFile() Set objExcel = CreateObject("Excel.Application") Set objBook = objExcel.Workbooks.Open("[テンプレート名]") Set objSheet = objBook.Worksheets(1) 'Excelを表示する objExcel.Visible = True <% 'レコードセット objRS.Open ・・・ i = 1 Do Until objRS.EOF %> objSheet.Range("B<%=i%>").Value = "<%=objRS("[列名1]")%>" objSheet.Range("C<%=i%>").Value = "<%=objRS("[列名2]")%>" <% objRS.MoveNext Loop objRS.Close Set objRS = Nothing %> objBook.SaveAs [保存ファイル名] objBook.Close Set objBook = Nothing objExcel.Quit Set objExcel = Nothing End Sub </SCRIPT> </HEAD> <BODY onLoad="CreateFile();"> ・ ・ ・
その他の回答 (1)
- gazy
- ベストアンサー率19% (13/66)
サーバー側でXMLからPDFを生成して、そのPDFをダウンロードしてプリントするというのはいかがでしょう?