asp.net 导出excel文件
之前做过winfrom程序的导出excel文件的功能,感觉非常简单。现在试着做asp.net中导出excel的功能,之前用的是Microsoft.Office.Interop.Excel这个对象来实现数据导出excel,在asp.net上完全被它给恶心到了。首先是不能弹出保存对话框,然后又是在代码执行到Microsoft.Office.Interop.Excel.Application myexcel = new Microsoft.Office.Interop.Excel.Application();这一句的时候,莫名其妙的不动了,这个问题在调试的时候没有出现,在发布后才出来了,后来找到一个方法给解决了,就是中配置文件的<system.web>下添加<identity impersonate="true" userName="administrator" password="0"/>,其中的用户名和密码就是本机的用户名和密码。这个问题解决之后,又遇到了令人痛苦的SaveAs保存异常,错误提示是:Exception from HRESULT: 0x800A03EC。在网上找遍了资料,都没能解决问题。不得已,只好尝试其他的导出excel的方案了。
下面的方案才是我最想要的,就简单明了的介绍一下:
首先是建一个web页,里面就一个按钮用来实现导出excel,代码如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
//Excel DownLoad
function excelExport() {
// var hidText = document.getElementById("hidParam");
// hidText.value = "some params";
document.getElementById("ExcelOutput").click();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<input type="button" value="EXCEL下载" style="width:100px;" onclick="excelExport()" id="excelBut" />
<%--<input id="hidParam" type="text" runat="server" style="display:none;"/> --%>
<asp:Button runat="server" ID="ExcelOutput" style="display:none" Text= "EXCEL出力" Width="0px" onclick="btnExcel_Click" UseSubmitBehavior="false"/>
<asp:GridView ID="gvExcel" runat="server" Height="95px" Visible="False"></asp:GridView>
</form>
</body>
</html>
其中注释掉部分可以用于向后台代码传递你想要的数据。
后台代码如下:
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnExcel_Click(object sender, EventArgs e)
{
string strExcelName = "MyExcel.xls";
strExcelName = strExcelName.Replace(@"/", "");
DataTable dt = new DataTable();
DataColumn dc = null;
dc = dt.Columns.Add("编号", Type.GetType("System.Int32"));
dc = dt.Columns.Add("产品", Type.GetType("System.String"));
dc = dt.Columns.Add("版本", Type.GetType("System.String"));
dc = dt.Columns.Add("描述", Type.GetType("System.String"));
DataRow dr = dt.NewRow();
dr[;
dr["产品"] = "这个地方是单元格的值";
dr["版本"] = "2.0";
dr["描述"] = "这个地方是单元格的值";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[;
dr["产品"] = "这个地方是单元333格的值";
dr["版本"] = "3.0";
dr["描述"] = "这个地方是单元格的33值";
dt.Rows.Add(dr);
gvExcel.Visible = true;
gvExcel.DataSource = null;
gvExcel.DataSource = dt;
gvExcel.DataBind();
ExportToExcel(this.Page, gvExcel, strExcelName);
}
public void ExportToExcel(System.Web.UI.Page page, GridView excel, string fileName)
{
try
{
foreach (GridViewRow row in excel.Rows)
{
; i < row.Cells.Count; i++)
{
excel.HeaderRow.Cells[i].BackColor = System.Drawing.Color.Yellow;
}
}
excel.Font.Size = ;
excel.AlternatingRowStyle.BackColor = System.Drawing.Color.LightCyan;
excel.RowStyle.Height = ;
//page.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); //如果出现中文乱码,就用这句
page.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);
page.Response.Charset = "utf-8";
page.Response.ContentType = "application/vnd.ms-excel";
page.Response.Write("<meta http-equiv=Content-Type content=text/html;charset=utf-8>");
excel.Page.EnableViewState = false;
excel.Visible = true;
excel.HeaderStyle.Reset();
excel.AlternatingRowStyle.Reset();
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
excel.RenderControl(oHtmlTextWriter);
page.Response.Write(oStringWriter.ToString());
page.Response.End();
excel.DataSource = null;
excel.Visible = false;
}
catch (Exception e)
{ }
}
}
这里为了突出介绍的重点,对于数据的获取就没有介绍了。这里面有个问题,就是当程序执行到
excel.RenderControl(oHtmlTextWriter); 这一句的时候,报了个错:控件必须放在具有 runat=server 的窗体标记内,这个只需要重写方法VerifyRenderingInServerForm就是了。
public override void VerifyRenderingInServerForm(Control control)
{
// 这个方法必须要的,不然在下面的代码excel.RenderControl(oHtmlTextWriter); 处会报错:控件必须放在具有 runat=server 的窗体标记内
}
之前我中vs2010 中做这个导出功能的时候是没有遇到这个问题的,但是中vs2013 中却遇到了。
好了,这种方式就介绍完了,它的好处就在于没有哪些乱七八糟的异常,同时也会弹出一个提示框用于选择保存的路径。
asp.net 导出excel文件的更多相关文章
- ASP.NET导出Excel文件
第一种最常见,并且最简单的方式,直接把GridView导出,导出格式为文本表格形式. protected void btnSaveExcel_Click(object sender, EventArg ...
- ASP.NETCore -----导出Excel文件并下载
本事例分为nopi(安装DotNetCore.NPOI)下载和EPPlus(EPPlus.Core.dll)下载,其中npoi下载演示的是根据执行的模板进行数据下载 npoi帮助类NpoiExcelU ...
- ASP.NET 导出EXCEL文件处理多对应排列的
这次项目遇到了一个导出excel需要对应排列的问题.本来在做这个项目之前都基本没做过excel导出的菜鸡,这次强行做还是有些忐忑的,加上那个表的结构比较奇特. 废话不多说,先介绍表结构吧 是数据 ...
- ASP.NET 导出excel文件出现乱码的解决办法
string html =TABLE ;//<table>标签,可以是多张表string modified = Regex.Replace(html, "<table &g ...
- 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法
-----转载:http://blog.csdn.net/sgear/article/details/7663502 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格 ...
- ASP.NET Core导入导出Excel文件
ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...
- Asp.net导出Excel续章(自定义合并单元格,非Office组件)
结合上次写的导出Excel方法,这次上头要求我将列头进行一下合并 以前的效果: 改进后的效果: 在上篇文章中写到了Excel的导出方法,这次为了避免在生产环境中使用Office组件,服务器各种权限配置 ...
- asp.net导出excel示例代码
asp.net导出excel的简单方法. excel的操作,最常用的就是导出和导入. 本例使用NPOI实现. 代码:/// <summary> ); ; ...
- [转] Asp.Net 导出 Excel 数据的9种方案
湛刚 de BLOG 原文地址 Asp.Net 导出 Excel 数据的9种方案 简介 Excel 的强大之处在于它不仅仅只能打开Excel格式的文档,它还能打开CSV格式.Tab格式.website ...
随机推荐
- 兼容各个浏览器的H.264播放: H.264+HTML5+FLOWPLAYER+WOWZA+RMTP
一.方案确定 计划做视频播放,要求可以播放H264编码的mp4文件,各个浏览器,各种终端都能播放. 首先查找可行性方案, http://www.cnblogs.com/sink_cup/archive ...
- java的System.getProperty()方法能够获取的值
java.version Java 执行时环境版本号 java.vendor Java 执行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装 ...
- Mac神器Iterm2的Shell Integration的用法和注意事项
在iterm2 v3.0版本中有了个新的feature——Shell Integration,其中比较重要的功能就是可以取代传统的“rz”.“sz”(即:向服务器上传.下载文件) 具体的用法可以参见官 ...
- 【计算几何初步-线段相交+并查集】【HDU1558】Segment set
Segment set Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- Unhandled event loop exception 解决办法
网上搜索了一下.对其他人有效的办法有两种: 1. 安装了adsafe .卸载掉就可以了. 2.安装了流氓软件:百度杀毒. 卸载掉也解决问题了 我就是第三种情况.到现在还没解决的热.!. 谁还有更好的 ...
- css权重计算
第一等:代表内联样式,如: style=””,权值为1000. 第二等:代表ID选择器,如:#content,权值为100. 第三等:代表类,伪类和属性选择器,如.content,权值为1 ...
- ios9基础知识(UI)总结
UIWindow.UILabel.UIColor.UIScreen.UIViewController.UIView.UIControl.UIButton.IBOutlet.IBAction.UISte ...
- Windows Server 2008 R2 IIS重装
背景描述: 在一个刚睡醒午觉后的下午,忽然收到客户反馈,说昨天开始应用特别卡,各种卡各种不好用,忽然想到上次说要优化服务器IIS配置还一直没弄,然后迷迷糊糊的就开始进行客户现场服务器IIS配置优化,涉 ...
- 【转】VS2010中文注释带红色下划线的解决方法
转载自:http://blog.csdn.net/whatday/article/details/7856323 环境:Visual Studio 2010 问题:代码中出现中文后会带下划线,很多时候 ...
- const的一些总结
const的一些总结 采用const符号常量写出来的代码更容易维护,有些函数只读不写: 1 常变量: const 类型说明符 变量名 2 常引用: const 类型说明符 &变量名 3 常成员 ...