GridView导出到Excel
问题描述:
我有一个asp.net页面,其中有一个gridview和一个按钮。 按钮点击事件我已经写了输出gridview到excel的代码,它工作得很好。 但是当我尝试打开导出的Excel文件它显示一个对话框,说:GridView导出到Excel
“你试图打开该文件是由文件extension.Verify指定不同的格式 该文件没有损坏 并且在打开文件之前来自可信来源“。
不仅如此,我发送了Excel文件在Gmail附件,并试图在手机中打开它,它会打开一个HTML file.What时间可以为了这个,我做的,因为我的客户端将使用移动查看邮件。
答
当我导出到excel时,我只是创建了一个逗号分隔的文件,并给它一个excel文件扩展名。当我开始使用带双引号的逗号分隔时,该消息就消失了。
“一”,“二”,“三”,而不是一个,两个,三个
答
在您的按钮单击事件:
protected void btnExcel_Click(object sender, ImageClickEventArgs e)
{
//export to excel
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
Response.Charset = "";
// If you want the option to open the Excel file without saving then
// comment out the line below
// Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/vnd.xls";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
//GV is the ID of gridview
GV.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
}
,并覆盖网页代码这种方法的背后:
public override void VerifyRenderingInServerForm(Control control)
{
/* Confirms that an HtmlForm control is rendered for the specified ASP.NET
server control at run time. */
}
答
我建议使用Excel文件扩展名创建实际的Excel文件,而不是CSV或HTML。
完成此操作的一个简单方法是使用ClosedXML。
为此,请从codeplex站点下载ClosedXML.dll和DocumentFormat.OpenXml.dll,并将它们作为参考添加到ASP.NET项目中。然后,在按钮单击事件中,您可以简单地设置Excel工作簿,根据您绑定到GridView
的相同DataTable
创建工作表,并将工作簿文件保存在HTTP响应中。事情是这样的:
var wb = new ClosedXML.Excel.XLWorkbook();
DataTable dt = GetTheDataTable();
dt.TableName = "This will be the worksheet name";
wb.Worksheets.Add(dt);
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=\"FileName.xlsx\"");
using (var ms = new System.IO.MemoryStream()) {
wb.SaveAs(ms);
ms.WriteTo(Response.OutputStream);
ms.Close();
}
Response.End();
我会用ClosedXML去了其他的替代品,因为许可限制较少,该文件是一流的,开发商是有帮助的,友好的,并且该项目目前非常活跃。
你试试..?把你的代码,你有尝试 – 2012-08-08 10:29:40
请显示您的代码。 – SMK 2012-08-08 10:30:03
完全重复http://stackoverflow.com/questions/9799726/why-showing-error-message-while-opening-xls-file – SMK 2012-08-08 10:31:18