private void ExportExcelFromDataGrid( string ファイル名 , System.Web.UI.WebControls.DataGrid ToExcelGrid )
{
Response.Clear();
Response.Buffer = true;
Response.Charset="utf-8";
Response.AppendHeader("Content-Disposition","attachment;filename="+Server.UrlEncode ( filename ) );
Response.ContentEncoding=System.Text.Encoding.Default;//設定出力流は简体中文
Response.ContentType = "application/ms-excel";// 出力ファイルの種類を Excel ファイルに設定します。
this.EnableViewState = false;
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter = 新しい System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = 新しい System.Web.UI.HtmlTextWriter(oStringWriter);
ToExcelGrid.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
private
void Button4_Click(オブジェクト送信者, System.EventArgs e)
{
this.Panel1.Visible = false;
文字列ファイル名 = "内训师.xls";
this.DataGrid1.Columns[6].Visible = true;
this.DataGrid1.Columns[7].Visible = true;
this.DataGrid1.Columns[this.DataGrid1.Columns.Count-1].Visible = false;
this.DataGrid1.Columns[this.DataGrid1.Columns.Count-2].Visible = false;
this.DataGrid1.AllowSorting = false;
this.DataGrid1.AllowPaging = false;
this.DataGrid1.SelectedIndex = -1;
this.BindGrid();
this.ExportExcelFromDataGrid ( ファイル名 , this.DataGrid1 );
}
原理は、DataGrid (つまりその親クラス) の RenderControl メソッドを出力し、DataGrid の外部にこれらの HTML コードを書き込むと同時に、次の ContentType を設定し、Excel 自身の自動セキュリティ機能によってこれを出力します。
多くのネットワーク上の友人がこのような信頼性の高いコードを使用しているため、次のような不適切な反映が行われていることがわかりました
。
「LinkButton は runat=server を備えたフォームで公開する必要があります」の類のコメント、さらに多くのネットワーク フレンドのコメント:
問題は、DataGrid が runat=server のフォームに配置されていないため、追加することができ
ます
。
最も有効なコードはすでに使用されているため、 runat=server を持つものにフォームを配置する必要があります。
問題は DataGrid ではなく LinkButton です。多くの心優しい友人がそう言うかもしれませんが、私はずっと DataGrid、LinkButton を使用しています。
実際の問題は、上のコードに // * が追加されていないことです。
もちろん、データグリッドが順序付けされておらず、そのような配列が使用されていない場合は、問題は発生しません。
正確に言うと、LinkButtion は実際には DataGrid を順序付けできるように設定されているテーブルに含まれるため、DataGrid の順序を False に設定する必要があります。
同様に上記のその他の「解除」、「解除」などのリストも LinkButton で使用されており、閲覧できないように設定されています。
これにより、LinkButton またはその他のコントロールが生成される可能性があります。西都不承認
http://www.cnblogs.com/killkill/archive/2006/09/21/510289.html