【发布时间】:2015-03-01 20:02:37
【问题描述】:
我必须在我的网页中进行分页,以便您搜索姓名列表并将结果返回到网格视图中。出现搜索结果时,会出现导出按钮。我有一个导出按钮供用户单击,它将数据从网格视图导出到xlsx格式的excel中。这是我当前的代码:
平均售价
<asp:TableCell>
<asp:DataGrid ID="ResultGrid" runat="server"
AutoGenerateColumns="false"
EnableViewState="false"
</asp:TableCell>
<asp:TableCell>
<asp:Button class="myClass" ID="export" runat="server" OnClick="ExportBtn_Click" Text="Export" />
</asp:TableCell>
C#
protected void ExportBtn_Click(object sender, EventArgs e)
{
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=myexcelfile.xls");
Response.ContentType = "application/vnd.xls";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
ResultGrid.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{
}
目前这会下载一个空白的 excel 文件......即使我的网格视图在搜索时有一个项目。
我的另一个问题(尽管我知道它不赞成)是如何导出为xlsx 而不是xls。如果我将xls 替换为xlsx,当我单击导出按钮时(当它试图在excel 中打开时),它会告诉我格式错误。
总结一下,我的两个问题是:为什么即使我在网格视图中返回了一行,它在 excel 中什么也不返回,以及如何导出为 xlsx 而不是 xls?
【问题讨论】:
-
您没有导出为 XLSX 或 XLS。您正在导出为 HTML,由于文件扩展名而伪装成 XLS。这也是不受欢迎的,因为用户在打开文档时会收到警告,说明它可能已损坏。相反,您需要找到一个能够生成实际 Open Office XML 电子表格文件 (.xlsx) 的库并使用它。我特别喜欢EPPlus,但请注意,要求我们推荐一个特定的库是题外话。
-
嗯,我现有的代码有修复吗
-
我什至不明白你最后的评论。您在问是否有办法在不更改代码的情况下修复您的代码?显然,如果你想改变它的工作方式,你必须改变代码。
-
正确,询问您是否对如何使用我现有的代码解决我的问题有任何其他意见
-
我的第一条评论解释了为什么你现有的代码不能工作。因此,您现有的代码不能也不应该被使用。