【问题标题】:Epplus xlsx file won't open in libreoffice after downloading, but will open in excelEpplus xlsx 文件下载后在 libreoffice 中打不开,但会在 excel 中打开
【发布时间】:2015-03-26 15:38:25
【问题描述】:

我正在生成一个EEPlus .xlsx 文件,用户可以在单击按钮后下载该文件。它不会在我使用 LibreOffice 4.4.1.2 的 Win8 机器上打开,但它会在我同事使用 Excel 2013 的 Win8 机器上打开。

我收到一条错误消息,说文件已损坏,需要修复,当我尝试修复它时,它说它无法修复。我的同事也收到此错误,但能够修复它并查看文件。

以下是创建可下载版本的相关代码:

MemoryStream ms = DataTableToExcelXlsx(dt, "Report");
 ms.Position = 0;
 ms.WriteTo(Response.OutputStream);
 Response.ContentType="application/vnd.openxmlformatsofficedocument.spreadsheetml.sheet";
 Response.AddHeader("Content-Disposition", "attachment;filename=DataTable.xlsx");
 Response.StatusCode = 200;

现在奇怪的是,我还生成了一个附加到电子邮件的 xlsx 文件,它可以正常打开。打开附加到电子邮件的文件时,我和我的同事都没有收到错误消息。

创建邮件附件版本的相关代码:

MemoryStream ms = DataTableToExcelXlsx(dtReportData, sReportTitle);
ms.Position = 0;
MailMessage mail = new MailMessage("you@yourcompany.com", sReportEmails);
using (SmtpClient client = new SmtpClient())
{
    mail.Subject = "Mixer - Test Scheduler Task Execute.";
    mail.Body = string.Format("The following report is executing. ReportSettings Id: {0}", reportSettingsId);
    mail.Attachments.Add(new Attachment(ms, sReportTitle + ".xlsx", "application/vnd.ms-excel"));
    client.Send(mail);
}

我也尝试将vnd.ms-excel MIME 类型用于可下载版本,但没有成功,所以我不知道为什么会这样。

【问题讨论】:

    标签: excel mime-types xlsx libreoffice epplus


    【解决方案1】:

    我很想以评论的形式回答这个问题,但还没有声誉,或任何情况。

    首先,您为什么不尝试使用这种内容类型? "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"

    目前,它似乎确实是错误的。请see as well this post,其中定义了正确的mime 类型。

    【讨论】:

    • 所以我的问题在于可下载版本,我已经在使用该内容类型。电子邮件版本使用vnd.ms-excel 类型,目前可以使用。
    • @enthe0s 好的,如果我弄错了,请告诉我;在您的可下载版本中,您同时使用了“application/vnd.ms-excel”(应该仅用于 xls,而不用于 EPPlus 的 openXML 文档)和“application/vnd.openxmlformatsofficedocument.spreadsheetml.sheet”,这是不正确的。是这个意思吗?
    【解决方案2】:

    尝试制作一个单元测试或命令行应用程序,将 xlsx 创建到您的本地硬盘驱动器(避免所有网络响应内容)。然后查看该 xlsx 中是否显示错误。

    如果是,则它是创建文件的代码。把它贴出来,我们可以看看。

    如果没有,则响应设置有问题。也许在性情?在这里,我有一个我知道有效的响应流:Open ExcelPackage Object with Excel application without saving it on local file path

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-05
      • 1970-01-01
      • 1970-01-01
      • 2021-07-27
      • 2019-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多