国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > 綜合 > 正文

將DataGrid數(shù)據(jù)寫入Excel文件

2024-07-21 02:29:25
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  前幾天項(xiàng)目中有個(gè)地方需要將datagrid的數(shù)據(jù)直接導(dǎo)入excel里,以提供給用戶下載,在網(wǎng)上找了下,好像都是與下面代碼類似的實(shí)現(xiàn):

程序代碼:

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輸出流的形式實(shí)現(xiàn),自己嘗試下,好像可以。我裝的windowxp sp2版的,后來(lái)到同事的機(jī)器上去試,結(jié)果就出問題了,每次執(zhí)行的時(shí)候,彈出那個(gè)【打開、保存、取消】的頁(yè)面,再一點(diǎn),結(jié)果整個(gè)站點(diǎn)的頁(yè)面都關(guān)閉了,再到其他機(jī)器上去試,結(jié)果有的能正常下載,有的就不行,以前聽說(shuō)過有這么個(gè)問題,好像也沒什么好的辦法解決。

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

webform4.aspx----html部分:

程序代碼:

<%@ page language="c#" codebehind="webform4.aspx.cs" autoeventwireup="false" inherits="webui.webform4" %>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en" >
<html>
 <head>
  <title>webform4</title>
  <meta name="generator" content="microsoft visual studio .net 7.1">
  <meta name="code_language" content="c#">
  <meta name="vs_defaultclientscript" content="javascript">
  <meta name="vs_targetschema" content="http://schemas.microsoft.com/intellisense/ie5">
 </head>
 <body ms_positioning="gridlayout">
  <form id="form1" method="post" runat="server">
   <asp:datagrid id="datagrid1" runat="server" width="100%">
    <itemstyle horizontalalign="center"></itemstyle>
    <headerstyle horizontalalign="center"></headerstyle>
    <footerstyle horizontalalign="center"></footerstyle>
    <pagerstyle pagebuttoncount="15" mode="numericpages"></pagerstyle>
   </asp:datagrid>
   <asp:button id="button1"  runat="server"
    text="button"></asp:button>
  </form>
 </body>
</html>


頁(yè)面上就一個(gè)datagrid和一個(gè)按鈕,按鈕用來(lái)觸發(fā)將數(shù)據(jù)到excel,后臺(tái)的其他代碼也就不弄上來(lái)了,下面是那個(gè)關(guān)鍵的按鈕事件
程序代碼:

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";  //序  號(hào)
 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"; //審批時(shí)間
 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);
 }

 //綁定數(shù)據(jù)到datagrid1
 this.datagrid1.datasource = sourcetb.defaultview;
 this.datagrid1.databind();
 //將datagrid1構(gòu)成的html代碼寫進(jìn)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("http://"));
 //得到excel文件的物理地址
 filepathname  = filepathname +"http://" + 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文件成功了,至于說(shuō)生成的excel文件在哪里,大家一看就應(yīng)該知道,要下載的話,也就是很簡(jiǎn)單的<a href='excel文件路徑'>文件下載</a>咯。
國(guó)內(nèi)最大的酷站演示中心!
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 凤山县| 新巴尔虎右旗| 寻甸| 阳江市| 全椒县| 庄河市| 郯城县| 大关县| 四平市| 化德县| 保靖县| 蒙城县| 海安县| 日喀则市| 巩义市| 噶尔县| 鹤山市| 大余县| 阿巴嘎旗| 牟定县| 高碑店市| 塔河县| 古丈县| 盐津县| 息烽县| 扬中市| 区。| 潜江市| 赣州市| 日土县| 芷江| 温宿县| 镶黄旗| 木里| 惠安县| 土默特右旗| 南溪县| 浮山县| 黎平县| 东乡| 托克逊县|