- PR -

ASPでのExcel出力&ダウンロード

1
投稿者投稿内容
SHIMA
会議室デビュー日: 2006/10/20
投稿数: 2
お住まい・勤務地: 石川県
投稿日時: 2006-10-20 11:02
はじめまして!

今度、社内のASP(.NETでない)で作成されたシステムの機能追加をすることになりました。
要件は、表示された検索結果をExcelファイルにダウンロードすることです。
いろいろ調べて、とりあえず作成できたのですが、問題が1件発生しています。
データ(備考)の中には、改行で整形しているものがあり、以下のソースだと、
改行が空白に変わってしまい、折角の整形したものが見づらくなってしまいました。注1)

<%
  RESPONSE.BUFFER=TRUE
  RESPONSE.ContentType = "application/vnd.ms-excel"
  RESPONSE.Charset = "shift_jis"
  RESPONSE.AddHeader "Content-Disposition","attachment; filename=EXCEL1.xls"
   :
  Rs.Open "SELECT ......", Conn, adOpenStatic, adLockReadOnly
  RCnt = Rs.RecordCount
  FCnt = Rs.Fields.Count

  RESPONSE.WRITE "<table border=1 cellpadding=0 cellspacing=1 width=669 bgcolor=#cce6f8>"
'--->列名設定
  RESPONSE.WRITE "<TR>"
  FOR L = 0 TO FCnt-1
    RESPONSE.WRITE "<TD bgcolor=#666699 align=center><font color=white size=2>"
    RESPONSE.WRITE "<b>" & RS.Fields(L).NAME & "<b></font>"
    RESPONSE.WRITE "</TD>"
  NEXT
  RESPONSE.WRITE "</TR>"
'--->データ設定
  for L = 1 TO RCnt
  RESPONSE.WRITE "<TR>"
  for I = 0 TO FCnt-1
    RESPONSE.WRITE "<TD valign=top>"
' 注1) RESPONSE.WRITE RS(I).VALUE
    │REC = RS(I).VALUE
 注2)│if REC <> "" then
    │ RESPONSE.WRITE REPLACE(REC, vbCrLf, "<BR>")
    │else
    │ RESPONSE.WRITE " "
    │end if
    RESPONSE.WRITE "</TD>"
  next
    RS.MOVENEXT
    RESPONSE.WRITE "</TR>"
  next
  RESPONSE.WRITE "</TABLE>"
  RESPONSE.FLUSH
  RESPONSE.END
  RS.CLOSE
  Conn.CLOSE
%>
そこで、注2)にように、改行を変換したのですが、今度は改行毎に行数が増えてしまいました。
通常のExcelみたいに、1つのセルの中で改行したいのですが.....

なお、WWWサーバにはOfficeが入っていないため、CreateObjectでサーバ側にExcelを作成/処理することが
できません。(この方法は、良くないと聞いていますので.....)

対処方法や、別の方法での解決案をご存知であれば、教えて頂けないでしょうか?
よろしくお願い致します。

todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2006-10-20 11:13
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=26391&forum=7
SHIMA
会議室デビュー日: 2006/10/20
投稿数: 2
お住まい・勤務地: 石川県
投稿日時: 2006-10-20 13:25
todo殿

早速の返答ありがとうございました。
検索の方法が悪かったのですね!

回答のあったurlの「http://www.ken3/asp/asp079.html」を参考にし、
RESPONSE.WRITE REPLACE(REC, vbCrLf, "<BR>")
 ↓
RESPONSE.WRITE REPLACE(REC, vbCrLf, "<BR style='mso-data-placement:same-cell'>")
に変更すると、解消できました。
ちょっと「mso」について学習したいと思います。

どうもありがとうございました。<(_ _)>

1

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