こんにちわ。
本当に久しぶりの更新になってしまいました。
(まぁ、いつものことなんですけど…)
今回は、現在クライアント様からデータをcsv方式ではなく、
asp(vbscript)にてエクセルに吐き出してほしいという要望があり、
簡易に吐き出す方法を記載したいと思います。
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <%@ language=vbscript %> <% '------------------------------------ '本来はここにデータベースとつなげたり '引数の処理したりをします '今回、データベースから引っ張ってきた 'レコードセットをObjRS1とします '------------------------------------ %> <% response.buffer = true response.ContentType = "application/vnd.ms-excel" response.AddHeader "content-disposition", "inline; filename=test.xls" %> < html xmlns:o = "urn:schemas-microsoft-com:office:office" xmlns:x = "urn:schemas-microsoft-com:office:excel" < head > < meta http-equiv = Content -Type content = "text/html; charset=shift_jis" > < meta name = ProgId content = Excel .Sheet> < meta name = Generator content = "Microsoft Excel 10" > < title >タイトル</ title > </ head > < body > < table border = "1" > < tr > < th style = "background-color: #add8e6" width = "70" >ID</ th > < th style = "background-color: #add8e6" width = "70" >名前</ th > </ tr > <% Do Until ObjRS1.EOF %> < tr > < td style = 'mso-number-format:"\@";' ><%=ObjRS1("ID")%></ th > < td ><%=ObjRS1("UserName")%></ th > </ tr > <% ObjRS1.MoveNext Loop %> </ table > </ body > </ html > <% response.flush response.end %> |
はい。意外とまとめてしまうとこんなものなのです。
要はhtml方式で作成して、ヘッダー部分でEXCELとして認識させる
という方式なのです。
response.buffer から headの閉じタグまではお約束事。
最後のresponse.flush、response.endもお約束事です。
あとは何てこと無い、データをテーブルで作成・表示しているだけなのです。
また、 style=’mso-number-format:”\@”;’ というスタイルを入れていますが、
これは、EXCELで開いた際に、00001という頭に0が付く文字については、
EXCELでは削除してしまうので、文字列として認識させるために、
スタイルを入れています。
お試しあれ。
2014.11.17追加
【続報】webからエクセルファイルに吐き出す方法
も、ご覧ください。