【发布时间】: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