2024年6月7日发(作者:)
.NET导出Excel文件
最近做 Excel导出功能,顺便整理了一下可用的一些导出Excel方法
一般导出方式
1,客户提出要将统计的结果导出到excel文件,首先利用如下方式:
增加 <%@page contentType="application/-excel;charset=GBK" %>
头部说明,然后放一个table在该页面中即可了。
2,客户看过后提出了改进意见,要求保存文件的时候自动给文件一个名称,这样可以直接
保存。
改进如下:
增加 der("Content-Disposition", "attachment; filename="+fileName);
但是却又遇到了乱码的问题:
der("Content-Disposition",
"attachment; filename="+new String(es("GBK"),"iso-8859-1"));
将文件名称的编码由GBK转换为ISO-8859-1就正常了。
GridView导出Excel
尝试了一下Gridview导出为Excel,原本以为很简单,可是真正应用起来还是不太好弄
的,呵呵,所想非所得。总结了一下应该注意下面几点:
1.由于gridview的内容可能是分页显示的,因此,这里在每次导出excel时,先将gridview
的allowpaging属性设置为false,然后databind()一下,确保搂到所有数据;
2.不用单独设置导出的路径,导出时会弹出对话框让你确认保存位置;
3.要写一个空的VerifyRenderingInServerForm方法(必须写),以确认在运行时为指定的
服务器控件呈现HtmlForm 控件;
4.导出后别忘记再重新设置其allowpaging属性;
当我把这些都设置好以后,点击[导出],出现了 只能在执行 Render() 的过程中调用
RegisterForEventValidation(RegisterForEventValidation can only be called during
Render(); ) 的错误,又检查代码,没发现问题啊,搞了一会弄不出来,然后搜索了一下,
发现了解决办法:
修改你的aspx文件中的:
<%@ Page Language="C#" EnableEventValidation = "false" AutoEventWireup="true"
CodeFile="" Inherits="Autho_SysUser2" %>
增加红色的部分就ok了。
下面是代码和截图:
#region 导出为Excel
public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for
}
private void ToExcel(Control ctl, string FileName)
{
t = "UTF-8";
tEncoding = 8;
tType = "application/ms-excel";
Header("Content-Disposition",
"attachment;filename=" + "" + FileName);
ViewState = false;
Writer tw = new Writer();
HtmlTextWriter hw = new HtmlTextWriter(tw);
Control(hw);
(ng());
();
}
private void toExcelClk()
{
aging = false;
orting = false;
nd();
ToExcel(gvSysUser, "OFS_");
aging = true;
orting = true;
nd();
}
#endregion
最新导出EXCEL类
说明:可以导出页面和DATAGRID(WebControl)数据,可以导出表单头


发布评论