2012-02-20 22 views
11

私はhtmlテーブル(グリッドビューではない)を持っており、適切なヘッダーとローはありません。その代わりに、構造とデータをカスタマイズしました。私はExcelにこのテーブルをエクスポートしたいです。 ASP.NETを使用するにはどうすればよいですか? enter image description hereASP.NETを使用してHTMLテーブルをExcelにエクスポート

ラベルは固定テキストで、整数値はデータベースからのものです。したがって、テーブル構造は整数/小数の値のみが変更されて固定されます。

+1

これは反復可能なプロセスでなければなりませんか?またはあなたのウェブページから一度カットアンドペーストできますか? – Randy

+2

テーブルのデータはどこから得られますか? – Didaxis

+0

他の人と違って、私は下見を説明します:これは、どんな価値の実際の答えを引き出すのに十分な詳細がない貧しい問題です。詳細を提供するか、この質問がクローズされると思われます。 – Didaxis

答えて

8

ASP.NETを使用してHTMLテーブル(Not Gridview)のカスタマイズされた構造とデータをExcelにエクスポートする必要があります。

Response.ContentType = "application/x-msexcel"; 
Response.AddHeader("Content-Disposition", "attachment; 
filename=ExcelFile.xls"); 
Response.ContentEncoding = Encoding.UTF8; 
StringWriter tw = new StringWriter(); 
HtmlTextWriter hw = new HtmlTextWriter(tw); 
tbl.RenderControl(hw); 
Response.Write(tw.ToString()); 
Response.End(); 
次のコードを追加します IDを提供し、

<table id="tbl" runat="server" >

  • runat="server"属性を追加

    1. 次のアプローチを試してみてください

  • +0

    非常に良い。どのようにExcelファイルにイメージを置くか、またはセルなどの色を塗りたい場合はどうすればいいですか。私が言いたいのは、エクスポート後にExcelファイルをフォーマットすることです。 – Haminteu

    +0

    これを確認してくださいhttp://stackoverflow.com/questions/7172282/give-background-color-to-excel-sheet-in-asp-net/9858841#9858841 and http://stackoverflow.com/questions/9410401/adding -custom-header-to-the-excel-file/9653194#9653194 –

    +0

    私のSPサイトでVisual Webパーツからエクスポート機能を使用しようとしています。 '応答'は私にエラーを与えています。 – SearchForKnowledge

    0

    全く自動化された方法はありません。しかし、同じコードを使用してテーブルを作成し、代わりに出力に書き込むことができます。単純なCSVファイルとして書き込むと、ダウンロードしたファイルをクリックするだけでExcelに読み込むことができます。

    正しいヘッダーを設定することで、コンテンツをWebページではなくダウンロードとして扱うようブラウザに指示できます。 this articleにこれを行うコードを投稿しました。

    +1

    説明なしで答えを投票するBozoは誰ですか? –

    +0

    私は下向きの "bozo"ではありません:)しかし、OPが明示的にこれがGridViewにないと述べたため、おそらくあなたの答えは投票に失敗しました。私たちが知っている限り、これは、OPが制御できないサイト上のHTMLテーブルです。 – Didaxis

    +0

    @ErOx:はい、要点です。 :) OPは彼がASPを使用していると言って以来。NET、私は彼が彼自身のサイトからこれをやっていると仮定するつもりです。しかし、私はこの問題についてあいまいさがあることに同意します。 –

    2

    あなたは、コードの下に使用することができます:あなたはあなたのUIとまったく同じエクスポート出力の外観をしたい場合

    Response.ContentType = "application/force-download"; 
    Response.AddHeader("content-disposition", "attachment; filename=Print.xls"); 
    Response.Write("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">"); 
    Response.Write("<head>"); 
    Response.Write("<META http-equiv=\"Content-Type\" content=\"text/html; charset=utf-  8\">"); 
    Response.Write("<!--[if gte mso 9]><xml>"); 
    Response.Write("<x:ExcelWorkbook>"); 
    Response.Write("<x:ExcelWorksheets>"); 
    Response.Write("<x:ExcelWorksheet>"); 
    Response.Write("<x:Name>Report Data</x:Name>"); 
    Response.Write("<x:WorksheetOptions>"); 
    Response.Write("<x:Print>"); 
    Response.Write("<x:ValidPrinterInfo/>"); 
    Response.Write("</x:Print>"); 
    Response.Write("</x:WorksheetOptions>"); 
    Response.Write("</x:ExcelWorksheet>"); 
    Response.Write("</x:ExcelWorksheets>"); 
    Response.Write("</x:ExcelWorkbook>"); 
    Response.Write("</xml>"); 
    Response.Write("<![endif]--> "); 
    StringWriter tw = new StringWriter(); 
    HtmlTextWriter hw = new HtmlTextWriter(tw);  
    tbl.RenderControl(hw); 
    Response.Write(tw.ToString()); 
    Response.Write("</head>"); 
    Response.flush(); 
    

    はまた、インラインCSSを与えることadvicableです。 cssクラスをテーブルに適用すると、エクスポートされたExcelでは表示されません。 dtReportは、テーブルを(つまり、データをエクスポートする)MSOのフォーマットを使用して

    if (dtReports != null && dtReports.Rows.Count > 0 && !string.IsNullOrEmpty(formName)) 
          { 
           string filename = formName.ToUpper() + ParsConstant.XLS_EXTENSION; 
           StringWriter tw = new StringWriter(); 
    
           using (HtmlTextWriter hw = new HtmlTextWriter(tw)) 
           { 
    
            //Binding Datatable to DataGrid. 
            DataGrid dgGrid = new DataGrid(); 
            dgGrid.DataSource = dtReports; 
            dgGrid.DataBind(); 
    
            //Some Properties for the Header 
            dgGrid.HeaderStyle.Font.Bold = true; 
            dgGrid.HeaderStyle.Font.Size = 13; 
    
            //Get the HTML for the control. 
            dgGrid.RenderControl(hw); 
    
    
            Response.ContentType = "application/vnd.ms-excel"; 
            Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + ""); 
            //Response.Write("<style> TD { mso-number-format:\\@; } </style>"); 
    
    
            Response.Write(tw.ToString()); 
            Response.End(); 
           } 
          } 
    

    が回避されることはありませんヘッダを、我々は、次のLOCを使用してExcelにテーブルをエクスポートすることができますし、また、我々はフォーマットすることができます含まれている場合

    +1

    必ずしもインラインCSSを配置する必要はありません。頭にスタイルクラスを追加すると正常に動作します – Kronass

    1

    先頭のゼロを返しますが、テキストを文字列に変換します。この文字列は操作を行うためにはお勧めできません。

    関連する問題