- - PR -
Repeaterを利用したCSVダウンロードの改行について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-04-21 10:29
「[ASP.NET]データベースの内容をクライアントにダウンロード提供するには?」を参照にVB.NETでRepeaterを利用したCSVダウンロードページを作成しています。
http://www.atmarkit.co.jp/fdotnet/dotnettips/210aspdbdwnload/aspdbdwnload.html データベースの内容はダウンロードできているのですが、メモ帳やExcelで開くと改行コードがないためか、1レコードとして表示されてしまいます。SeparatorTemplateに「\r\n」を追加しても結果は同じでした。サンプルと同じように作成しているつもりですが、原因がよくわかりません。どなたかアドバイスをよろしくお願いします。 デザイン <asp:Repeater id="Repeater1" runat="server"> <HeaderTemplate>施設コード,施設名</HeaderTemplate> <ItemTemplate> <%# DataBinder.Eval(Container.DataItem, "SiteCd") %> ,<%# DataBinder.Eval(Container.DataItem, "SiteName") %> </ItemTemplate> </asp:Repeater> コード Sub Page_Load(sender As Object, e As EventArgs) Response.AppendHeader("Content-Disposition","attachment; filename=down.csv") Dim objConnection As New SqlConnection("・・・・・") Dim strSQL As string Dim objDataReader As SqlDataReader strSQL = "Select SiteCd, SiteName From TBL_Site" Dim cmd As New SqlCommand(strSQL, objConnection) objDataReader = cmd.ExecuteReader(CommandBehavior.Default) Repeater1.DataSource = objDataReader Repeater1.DataBind() | ||||||||
|
投稿日時: 2006-04-21 17:27
お世話になります。
SeparatorTemplate に <%# ControlChars.NewLine %> を使うと 改行されるみたいです。 | ||||||||
|
投稿日時: 2006-04-24 09:06
さっそくのアドバイスありがとうございます。
Separator Templateで試してみましたが、状況は変わらずでした。 他に考えられる対応策はありますでしょうか? <asp:Repeater id="Repeater1" runat="server"> <HeaderTemplate>施設コード,施設名 </HeaderTemplate> <ItemTemplate> <%# DataBinder.Eval(Container.DataItem, "SiteCd") %> ,<%# DataBinder.Eval(Container.DataItem, "SiteName") %> </ItemTemplate> <SeparatorTemplate> <%# ControlChars.NewLine %> </SeparatorTemplate> </asp:Repeater> | ||||||||
|
投稿日時: 2006-04-24 09:37
お世話になります。
確認なのですが、 @PageディレクティブのResponseEncoding属性は Shift_JIS になっていますよね。 以下のコードで実験したところ、 ヘッダ行及び明細行にも改行が入っていました。 aspx
CodeBehind
| ||||||||
|
投稿日時: 2006-04-24 10:07
ご回答ありがとうございます。
@Pageディレクティブは以下の通りになっています。 <%@ Page Language="vb" AutoEventWireup="false" Codebehind="DownloadCsv.aspx.vb" Inherits="AAA.DownloadCsv" ContentType="application/octet-stream" ResponseEncoding="Shift_JIS"%> なおこさんの言われたとおり、改行コードは入っていますが、できあがったcsvファイルがhtml形式になってしまっているのが、原因のようです。タグが入らないようにするにはどこか指定する箇所があるのでしょうか?ご教授よろしくお願いいたします。 ↓できあがったファイルは以下になります。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>DownloadCsv</title> <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> <script language="JavaScript" src="./JavaScript/Common.js"></script> </HEAD> <body id="Body1" onUnload="javascript:CloseChildWindow();"> <form name="Form1" method="post" action="DownloadCsv.aspx" id="Form1" onKeydown="javascript:KeyCheck();"> <input type="hidden" name="__VIEWSTATE" value="" /> 施設コード,施設名 1111 ,施設名 </form> </body> </HTML> | ||||||||
|
投稿日時: 2006-04-24 19:42
お世話になります。
aspx ファイルには、 私の前のレスの様に、 Page ディレクティブと <asp:Repeater... のみにしないと 駄目なようです。 また、<HeaderTemplate> や <ItemTemplate> や <SeparatorTemplate> に 余分な改行やタブなどがあると、うまく出力されませんでした。 | ||||||||
|
投稿日時: 2006-04-25 09:17
なおこさんの言われたとおり、いらないタグを除いたら、うまくいきました。まだまだいろいろと試してみたいと思います。
いろいろご教授ありがとうございました〜! |
1