【问题标题】:Export to Excel From GridView asp.net C# - Server Component从 GridView asp.net C# 导出到 Excel - 服务器组件
【发布时间】:2016-11-21 12:22:15
【问题描述】:

我正在从 GridView 导出到 excel,它在 localhost 上运行良好,但在生产服务器上却不行。我猜服务器上需要安装一些 excel 组件。有谁知道我需要安装什么才能使其正常工作?

GridViewAllApps.DataBind();

Response.Clear();
Response.Buffer = true;
Response.AddHeader("Content-Disposition", "attachment;filename=Applications.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
GridViewAllApps.RenderControl(hw);
string style = @"<style> .textmode {mso-number-format:\@; } </style>";
Response.Write(style);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();

【问题讨论】:

标签: c# asp.net excel gridview


【解决方案1】:

LainB,

您在生产服务器上遇到什么错误? 您的网格子类通过 html 编写器将网格呈现为 Excel 文件,您使用您创建的称为 RenderControl() 的方法将其字符串写入文件。该方法代码可能在您的计算机上使用了 Office Interop dll(您可能在 using 语句和/或项目引用中引用了它们)。

不幸的是,在 Web 服务器上运行时,您的代码会受到 IIS 允许执行的操作的限制。即使您在服务器上安装了 Office 组件,您的网站也将无法访问这些文件。 此外,由于法律限制,可能禁止将互操作文件烘焙到分发中。

看这里 Create Excel (.XLS and .XLSX) file from C#

【讨论】:

  • 我没有收到任何错误。发生的情况是弹出 Excel 上下文,询问您是要打开还是保存。如果您选择打开,则 Excel 会打开,但不会生成工作表。如果您选择保存,则会保存一个显示有效文件大小的文件,但当您打开它时,该文件为空。它在本地运行良好,这让我相信它是实时服务器上缺少的 Office 组件。
【解决方案2】:

解决方案:我放弃将 DataGrid 写入 Excel,因为它需要在服务器上安装 Excel 组件。 Marc 的链接将我引导至我安装的 EPPlus (dll) 并像梦一样工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    相关资源
    最近更新 更多