成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

將DataGrid數據寫入Excel文件

2010-08-28 10:48:52來源:西部e網作者:

前幾天項目中有個地方需要將DataGrid的數據直接導入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();
 

原理也就是把DataGrid的信息以流的形式寫到html輸出流的形式實現,自己嘗試下,好像可以。我裝的windowxp sp2版的,后來到同事的機器上去試,結果就出問題了,每次執行的時候,彈出那個【打開、保存、取消】的頁面,再一點,結果整個站點的頁面都關閉了,再到其他機器上去試,結果有的能正常下載,有的就不行,以前聽說過有這么個問題,好像也沒什么好的辦法解決。

后來考慮了下,何必不直接把寫到html流的信息直接寫到一個excel文件里面去讓客戶直接下載excel,于是稍微修改了下別人的源碼,直接生成Excel文件來讓客戶下載,演示源代碼如下:

WebForm4.aspx----Html部分:

程序代碼:

頁面上就一個DataGrid和一個按鈕,按鈕用來觸發將數據到Excel,后臺的其他代碼也就不弄上來了,下面是那個關鍵的按鈕事件
程序代碼:

private void Button1_Click(object sender, System.EventArgs e)
{
 DataTable SourceTb = new DataTable();
 DataColumn myDataColumn;

 myDataColumn   = new DataColumn();
 myDataColumn.DataType = System.Type.GetType("System.String");
 myDataColumn.ColumnName = "RowIndex";  //序  號
 SourceTb.Columns.Add(myDataColumn);

 myDataColumn   = new DataColumn();
 myDataColumn.DataType = System.Type.GetType("System.String");
 myDataColumn.ColumnName = "CheckUpManName"; //審批人
 SourceTb.Columns.Add(myDataColumn);

 myDataColumn   = new DataColumn();
 myDataColumn.DataType = System.Type.GetType("System.String");
 myDataColumn.ColumnName = "CheckUpIdeas"; //審批意見
 SourceTb.Columns.Add(myDataColumn);

 myDataColumn   = new DataColumn();
 myDataColumn.DataType = System.Type.GetType("System.String");
 myDataColumn.ColumnName = "CheckUpDate"; //審批時間
 SourceTb.Columns.Add(myDataColumn);

 myDataColumn   = new DataColumn();
 myDataColumn.DataType = System.Type.GetType("System.String");
 myDataColumn.ColumnName = "CheckUpRole"; //審批崗位
 SourceTb.Columns.Add(myDataColumn);

 myDataColumn   = new DataColumn();
 myDataColumn.DataType = System.Type.GetType("System.String");
 myDataColumn.ColumnName = "HandleType";  //操作類型(1:提交| 9:駁回)
 SourceTb.Columns.Add(myDataColumn);

 DataRow myDataRow;
 for(int i = 0;i < 30;i ++)
 {
  myDataRow     = SourceTb.NewRow();
  myDataRow["RowIndex"]  = i.ToString();
  myDataRow["CheckUpManName"] = "張三";
  myDataRow["CheckUpIdeas"] = "同意";
  myDataRow["CheckUpDate"] = "2006-03-20";
  myDataRow["CheckUpRole"] = "物資部主任";
  SourceTb.Rows.Add(myDataRow);
 }

 //綁定數據到DataGrid1
 this.DataGrid1.DataSource = SourceTb.DefaultView;
 this.DataGrid1.DataBind();
 //將DataGrid1構成的html代碼寫進StringWriter
 this.DataGrid1.Page.EnableViewState = false;
 System.IO.StringWriter  tw   = new System.IO.StringWriter();
 System.Web.UI.HtmlTextWriter hw  = new System.Web.UI.HtmlTextWriter(tw);
 this.DataGrid1.RenderControl(hw);
 string HtmlInfo = tw.ToString().Trim();

 string DocFileName = "審批信息.xls";
 string FilePathName = Request.PhysicalPath;
 FilePathName  = FilePathName.Substring(0,FilePathName.LastIndexOf("\\"));
 //得到Excel文件的物理地址
 FilePathName  = FilePathName +"\\" + DocFileName;
 System.IO.File.Delete(FilePathName);
 FileStream Fs  = new FileStream(FilePathName, FileMode.Create);
 BinaryWriter BWriter= new BinaryWriter(Fs,System.Text.Encoding.GetEncoding("GB18030"));
 //將DataGrid的信息寫入Excel文件
 BWriter.Write(HtmlInfo);
 BWriter.Close();
 Fs.Close();
}
 

好了,寫入信息到Excel文件成功了,至于說生成的Excel文件在哪里,大家一看就應該知道,要下載的話,也就是很簡單的< a href='Excel文件路徑' >文件下載< /a >咯。

作者BLOG:http://blog.csdn.net/ppluncle/

關鍵詞:ASP.NET

贊助商鏈接:

主站蜘蛛池模板: 棋牌| 庄河市| 奉新县| 迁西县| 泽州县| 长白| 偃师市| 易门县| 西盟| 临沧市| 京山县| 铅山县| 聂拉木县| 广平县| 盐城市| 连平县| 榆树市| 迁西县| 太康县| 阿坝县| 海宁市| 庐江县| 荆州市| 平度市| 仙居县| 平原县| 吴江市| 丹江口市| 新密市| 潞西市| 荥经县| 湄潭县| 洪湖市| 通化县| 青河县| 旅游| 五莲县| 昌吉市| 孝昌县| 宁陕县| 建湖县|