在項目中我們經常會遇到要求将一些資料導出成excel或者word表格的情況
前台代碼:
<form id="form1" runat="server">
<div>
<asp:gridview id="gvpersonlist" runat="server" >
<columns>
<asp:boundfield datafield="id" headertext="編号" />
<asp:boundfield datafield="name" headertext="姓名" />
<asp:templatefield headertext="性别">
<itemtemplate>
<%# eval_r("sex").tostring()=="true"?"男":"女" %>
</itemtemplate>
</asp:templatefield>
<asp:boundfield datafield="age" headertext="年齡" />
<asp:templatefield headertext="婚否">
<%# boolean.parse(eval_r("married").tostring())==true?"是":"否" %>
</columns>
</asp:gridview>
<asp:button id="btntoexcel" runat="server" onclick="btntoexcel_click" text="導出excel" />
<asp:button id="btntoword" runat="server" onclick="btntoword_click" text="導出word" />
</div>
</form>
背景代碼
protected void btntoexcel_click(object sender, eventargs e)
{
stringbuilder sb = new stringbuilder();
stringwriter sw = new stringwriter(sb);
htmltextwriter htw = new htmltextwriter(sw);
page page = new page();
htmlform form = new htmlform();
gridview1.enableviewstate = false;
page.enableeventvalidation = false;
page.designerinitialize();
page.controls.add(form);
form.controls.add(gridview1);
page.rendercontrol(htw);
response.clear();
response.buffer = true;
//設定導出檔案的格式
response.contenttype = "application/vnd.ms-excel";
//假定導出的檔案名為data.xls
response.addheader("content-disposition", "attachment;filename=data.xls");
response.charset = "utf-8";
response.contentencoding = encoding.default;
response.write(sb.tostring());
response.end();
}
protected void btntoword_click(object sender, eventargs e)
stringbuilder sb = new stringbuilder();
response.contenttype = "application/ms-word";
response.addheader("content-disposition", "attachment;filename=data.doc");
參考部落格1:http://blog.csdn.net/zhoufoxcn/archive/2008/05/16/2450642.aspx
參考部落格2:http://blog.csdn.net/rickyll/archive/2009/10/22/4714517.aspx