导出到excel在服务器上不起作用

时间:2016-08-26 12:27:27

标签: c# asp.net-mvc export-to-excel

我有一个在两台服务器上运行的应用程序,一个是QA,另一个是Production。 问题是,当您要打开应用程序在QA或PRD中下载的Excel时,它会打开Excel但没有任何反应,只是空白。

有一段时间,应用程序可以将信息导出到Excel文件,自昨天起不再,方法如下:

[Autorizacion]
public ActionResult ExportToExcelReports()
{
    IList<DTOReport> reports = null;

    try
    {
        reports = BusinessLogic.Report.GetReports(SessionHelper.Site.IdSite); 

        var title = "Reports";

        var report = new System.Data.DataTable(title);

        report.Columns.Add("Blah1", typeof(string));
        report.Columns.Add("Blah2", typeof(string));
        report.Columns.Add("Blah3", typeof(string));
        report.Columns.Add("Blah4", typeof(string));
        report.Columns.Add("Blah5", typeof(string));
        report.Columns.Add("Blah6", typeof(string));
        report.Columns.Add("Blah7", typeof(string));
        report.Columns.Add("Blah8", typeof(string));
        report.Columns.Add("Blah9", typeof(string));
        report.Columns.Add("Blah10", typeof(string));

        foreach (var item in reports)
        {
            var brandText = "";

            foreach (var brand in item.Brands)
            {
                brandText = brandText + (brandText != "" ? "," : "") + brand.Name;
            }

            report.Rows.Add(item.Name, item.Description, item.DateCreated, item.Type, item.Category, item.Latitude, item.Longitude, item.Locality, item.Province, brandText);
        }

        var grid = new GridView();
        grid.DataSource = report;
        grid.DataBind();

        Response.ClearContent();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "attachment; filename=" + title + ".xls");
        Response.ContentType = "application/ms-excel";

        Response.Charset = string.Empty;
        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);

        grid.RenderControl(htw);

        Response.Output.Write(sw.ToString());
        Response.Flush();
        Response.End();    
    }
    catch (Exception ex)
    {
        LogError(ex);
    }

    return View("Index", reports);
}

问题是,这可以在我的本地机器上工作,我打开我编译它的项目,我运行它,它与生产相同的信息或数据发生故障,QA也是如此,因为它们共享同一台服务器-database。

GetReports工作正常,它不会进入try catch,它只适用于我的开发环境。可能与服务器中的excel相关的东西?

是否与IIS或部署应用程序的服务器有关?

2 个答案:

答案 0 :(得分:0)

http://www.computerhope.com/issues/ch001123.htm

您可以尝试以上链接。由于它曾经工作过,可能Excel的设置已经改变。 基本上在链接中有三件事要尝试:

  1. 取消选中Excel中的“忽略DDE”选项,以便外部应用程序 这称之为不被忽视。
  2. 检查文件的关联 各种Excel文件类型的扩展名(.xls,.xlsx,.xlsm等)
  3. 如果办公室运作不正常,可以修理办公室

答案 1 :(得分:0)

好的,我在这个链接中找到了答案: Opening excel files from the internet opens a blank excel window

Windows安装此更新时出现问题: Windows Update KB3115130(Excel 2010) - https://www.microsoft.com/en-us/download/details.aspx?id=52809

&#34; Microsoft Excel 2010 32位版中存在一个安全漏洞,当打开恶意修改的文件时,该漏洞可能允许任意代码运行。此更新解决了该漏洞。&#34;

解决方案是(不推荐)卸载该更新或: 进入文件的属性(R click - properties) 点击“取消屏蔽”#39; 点击“应用”#39; (Josh Bucklen回答)