datagrid數據導入EXCEL的實現方法及注意事項

 實現方法,借鑑孟子老師的
private void Page_Load(object sender, System.EventArgs e)
        
{
            
// 在此處放置用戶代碼以初始化頁面
            if(Request .QueryString ["GenerateIndex"]!=null && Request .QueryString ["GenerateIndex"].ToString ()!="")
            
{
                GenerateIndex
=Convert .ToInt32 (Request .QueryString ["GenerateIndex"]);
            
            }

            
if(!this.Page .IsPostBack )
            
{
                
                DataTable dt
=cpm.PaperGenerateDetailQuery (GenerateIndex);
                
if(dt!=null && dt.Rows .Count >0)
                
{
                    
this.DataGrid1 .DataSource =dt;
                    
this.DataGrid1 .DataBind ();
                }

            }

        }
private void Button1_Click(object sender, System.EventArgs e)
        
{
            Response.Clear(); 
            Response.Buffer
= true
            Response.Charset
="GB2312";    
            Response.AppendHeader(
"Content-Disposition","attachment;filename=FileName.xls"); 
            Response.ContentEncoding
=System.Text.Encoding.GetEncoding("GB2312");//設置輸出流爲簡體中文
            Response.ContentType = "application/ms-excel";//設置輸出文件類型爲excel文件。 
            this.EnableViewState = false;    
            System.Globalization.CultureInfo myCItrad 
= new System.Globalization.CultureInfo("ZH-CN",true);
            System.IO.StringWriter oStringWriter 
= new System.IO.StringWriter(myCItrad); 
            System.Web.UI.HtmlTextWriter oHtmlTextWriter 
= new System.Web.UI.HtmlTextWriter(oStringWriter);            
            
this.DataGrid1.RenderControl(oHtmlTextWriter); 
            Response.Write(oStringWriter.ToString());
            Response.End();
        }


        
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
        
{
            
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            
{
                e.Item.Cells[
0].Attributes.Add("style","vnd.ms-excel.numberformat:@");//格式化爲EXCEL的文本

                e.Item.Cells[
1].Attributes.Add("style","vnd.ms-excel.numberformat:@");

            }

        }

注意:

1.若要使用此種方法,則datagrid不能做分頁操作,否則不能保存至EXCEL.

2.由於datagrid的數據量較大,共5萬條數據,生成的EXCEL文檔約爲6M。由於.net默認的request content 爲4096KB,約4M,因此將導致我此次的EXCEL生成失敗。解決辦法是,修改C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/CONFIG/machine.config文件,找到<httpRuntime
            executionTimeout="9000"
            maxRequestLength="4096"
            useFullyQualifiedRedirectUrl="false"
            minFreeThreads="20"
            minLocalRequestFreeThreads="20"
            appRequestQueueLimit="100"
            enableVersionHeader="true"
        />節,將maxRequestLength="4096"增大至409600.

至此,問題解決。

 

發佈了29 篇原創文章 · 獲贊 4 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章