ASP.NET将DataView导出为Excel 2010格式问题

我正在导出DataView对象到Excel文件示例。

我的解决scheme只是一个简单的Download.aspx页面与一个覆盖函数:

ASPX.CS文件:

protected override void Render(HtmlTextWriter writer) { Response.ContentType = "application/ms-excel"; Response.AddHeader("Content-Disposition", "attachment; filename=export2excel.xls"); DataView view = (DataView) Session["MyView"]; exportGrid.DataSource = view; exportGrid.DataBind(); exportGrid.RenderControl(writer); } 

ASPX文件:

 <form id="Form1" method="post" runat="server"> <asp:DataGrid id="exportGrid" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 16px" runat="server" CssClass="dgDefault" AutoGenerateColumns="False"> <AlternatingItemStyle BackColor="#EFF7D3"></AlternatingItemStyle> <HeaderStyle Font-Bold="True" BackColor="#FF0000"></HeaderStyle> <Columns> <asp:BoundColumn DataField="Name" HeaderText="Name"></asp:BoundColumn> <asp:BoundColumn DataField="Description" HeaderText="Description"></asp:BoundColumn> <asp:BoundColumn DataField="Comment" HeaderText="Comment"></asp:BoundColumn> <asp:BoundColumn DataField="Contact" HeaderText="Contact"></asp:BoundColumn> </Columns> </asp:DataGrid> </form> 

解决scheme工作正常。 有Excel文件,格式正确。 但是有一件事,MS Excel 2007和2010在打开它们之前总是会抛出一个信息。

根本原因是因为我们打开一个HTML文件作为一个XLS文件 (渲染使用HTMLTextWriter),令人惊讶的Office 2007及更高版本。 如果使用notepad ++打开export2excel.xls文件,您将看到它的HTML。

有人build议让人们在客户端更改registry以禁用其安全性。 你们知道这不是我们的select,不是吗?

关键:HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 12.0 \ Excel \安全值:(DWORD)“ExtensionHardening”= [0 =禁用检查; 1 =启用检查和提示; 2 =启用检查,不提示拒绝打开]默认设置,如果值不存在是1(启用和提示)。

问题:是否有另一种方式导出到Excel文件,这将使MS Excel 2007和后来和平地打开它们? 没有提示一个恼人的消息框?