【发布时间】:2014-02-18 17:37:48
【问题描述】:
我正在尝试使用 Open XML SDK 2.5 从 ASP.NET MVC4 导出 Excel 工作表。我正在尝试使用 MSDN 中的标准示例,
extention = "xlsx";
response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
response.AddHeader("Content-Disposition",String.Format("attachment; filename={0}.{1}", fileName, extention));
using (MemoryStream mem = new MemoryStream())
{
// Create a spreadsheet document by supplying the filepath.
// By default, AutoSave = true, Editable = true, and Type = xlsx.
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(mem, SpreadsheetDocumentType.Workbook);
// Add a WorkbookPart to the document.
WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
workbookpart.Workbook = new Workbook();
// Add a WorksheetPart to the WorkbookPart.
WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet(new SheetData());
// Add Sheets to the Workbook.
Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets());
// Append a new worksheet and associate it with the workbook.
Sheet sheet = new Sheet()
{
Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart),
SheetId = 1,
Name = "mySheet"
};
sheets.Append(sheet);
workbookpart.Workbook.Save();
// Close the document.
spreadsheetDocument.Close();
mem.CopyTo(response.OutputStream);
}
我的文件正在下载,但是当我尝试打开它时,excel 弹出错误提示文件已损坏。当我用记事本或记事本++打开文件时,文件完全是空的,里面没有xml数据。
我缺少什么以及需要做什么?
提前致谢。
【问题讨论】:
-
你在调用 response.Flush() 吗?
-
是的,我正在调用flush。就像 trailmax 提到的问题是 SEEK。
标签: c# asp.net asp.net-mvc asp.net-mvc-4 openxml-sdk