0

行ごとにセル内に複数の値があるような方法で Excel スプレッドシートをエクスポートする方法を探しています。

現在、HtmlTextWriter クラスを使用して Html を Excel コンテンツ タイプ形式に書き出していますが、対応する行内の値ごとに新しいセルを作成します。

たとえば、現在、Row 1: RowTitle Value1 Row 2: Value2 Row 3: Value3 を書き出します。

私が望むのは、すべてを1行に書くことです。Row1: RowTitle Value1 Value2 Value3 Row2:

これは可能ですか - 誰かポインタを持っていますか?

私の現在のコードは次のとおりです。

Response.Buffer = true;
                    Response.ContentType = "application/vnd.ms-excel";
                    Response.Charset = "";
                    Response.AddHeader("content-disposition", "filename=Compare" + fileName + ".xls");
                    this.EnableViewState = false;
                    System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
                    System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
                    this.ClearControls(tblComparison);
                    tblComparison.RenderControl(oHtmlTextWriter);

                    // Embed style rules here so that when opening the file in Excel separately, the styling will stay in place
                    // and not be dependent on an external css file.
                    Response.Write(@"
        <head>
        <title>Compare</title>
        <style>
        #tblComparison { empty-cells:show;border-collapse:collapse;border:none; }
        #tblComparison tr td { vertical-align:top;text-align:center;padding:0px 5px 2px 8px;border-right:1px solid #094A8C;border-bottom:1px dotted #6699FF;font-size:.7em }
        #tblComparison tr td.header { text-align:right;font-weight:bold }
        #tblComparison tr td.header span.note { text-align:right;font-weight:normal;color:#094A8C; }
        #tblComparison tr td div.itrs { display:none }
        #tblComparison tr td textarea { width:20em }
        #tblComparison tr td textarea.objective { height:5em;font-size:.9em }
        #tblComparison tr td select { width:200px;font-size:1em }    
        #tblComparison tr td textarea.comments { height:10em;font-size:.9em }
        #tblComparison tr td textarea.multiline { height:10em;font-size:.9em }
        #tblComparison tr td.requested textarea.comments,
        #tblComparison tr td.requested textarea.objective { background-color:#F2F7FB;border:1px solid gray }
        #tblComparison tr td.requested input { font-size:1em;background-color:#F2F7FB;border:1px solid gray }
        #tblComparison tr .existRequested { background-color:#52697B; color:White;}
        div { font-size: 1em }
        </style>
        </head>
");
                    Response.Write(oStringWriter.ToString());
                    Response.End();

前もって感謝します。

4

3 に答える 3

0

このコードがお役に立てば幸いです。

    Response.ContentType = "text/csv";
    Response.Cache.SetNoStore();
    Response.Buffer = true;
    Response.BufferOutput = true;
    Response.Charset = "UTF-8";
    Response.ContentEncoding = System.Text.Encoding.Unicode;
    Response.Write("Company, City, Country");
    //IF you want each item in each cell of a row
    byte[] buffer = System.Text.Encoding.Unicode.GetBytes(Separater(Name) + Separater(City) +Separater(Country) +  "\r\n")
    Response.OutputStream.Write(buffer, 0, buffer.Length);
    Response.OutputStream.Flush();


    private string Separater(string text)
    {
        if (text == null)
        {
            return "\"\",";
        }
        return "\"" + text.Replace("\"", "'") + "\"" + ",";
    }
于 2012-08-14T05:04:34.140 に答える
0

「エクスポート」と言うときは、ユーザーがダウンロードするスプレッドシートを作成できるようにしたいという意味だと思います。それがあなたの言いたいことなら、「CarlogAg Excel Xml Writer」を見てみたいかもしれません - http://www.carlosag.net/Tools/ExcelXmlWriter/

Excel スプレッドシート内のデータを含むページ上にグリッドを作成できるようにしたい場合は、「Excel データ リーダー」を使用してデータを読み取ることを検討してください - http: //exceldatareader.codeplex.com/ . これにより、次のように ASP.Net をバインドできる DataTable が得られます... http://www.ezineasp.net/post/ASP-Net-Bind-GridView-to-DataTable.aspx

于 2012-08-14T13:48:45.237 に答える
0

コレクションまたはデータセットからテーブルのデータを取得する場合は、スプレッドシート クラスを使用してその場で Excel を作成し、必要な方法でコード ビハインドからフォーマットすることができます。

このようなもの。OWC

于 2012-08-14T05:41:46.937 に答える