如何在不创建本地文件的情况下使用 OpenXML 创建 Excel 文件?
How to create Excel file using OpenXML without creating a local file?
是否可以在不创建本地文件的情况下使用 OpenXML SDK 创建和编辑 excel 文档?
根据文档,Create
方法需要 filepath
,它会创建文件的本地副本。
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook);
我在这里指的是 MSDN 文章:
https://msdn.microsoft.com/en-us/library/office/ff478153.aspx
我的要求是创建文件,并且应该在单击按钮时由浏览器下载。
有什么建议吗?
您可以使用 SpreadsheetDocument.Create
的重载,它接受一个 Stream
并传递给它一个 MemoryStream
:
MemoryStream memoryStream = new MemoryStream();
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(memoryStream, SpreadsheetDocumentType.Workbook);
//add the excel contents...
//reset the position to the start of the stream
memoryStream.Seek(0, SeekOrigin.Begin);
return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
请注意,根据 this Whosebug question,您不需要处理 Stream,因为它将由 FileStreamResult
class.
为您完成
添加另一个答案,因为我花了太多时间搜索这个:另一种将 SpreadsheetDocument 保存到流的方法是调用 SpreadsheetDocument.Clone(Stream s)
它的好处是可以让您保存到流中,即使您是从不想保存到的文件或流中创建文档的。
是否可以在不创建本地文件的情况下使用 OpenXML SDK 创建和编辑 excel 文档?
根据文档,Create
方法需要 filepath
,它会创建文件的本地副本。
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook);
我在这里指的是 MSDN 文章: https://msdn.microsoft.com/en-us/library/office/ff478153.aspx
我的要求是创建文件,并且应该在单击按钮时由浏览器下载。
有什么建议吗?
您可以使用 SpreadsheetDocument.Create
的重载,它接受一个 Stream
并传递给它一个 MemoryStream
:
MemoryStream memoryStream = new MemoryStream();
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(memoryStream, SpreadsheetDocumentType.Workbook);
//add the excel contents...
//reset the position to the start of the stream
memoryStream.Seek(0, SeekOrigin.Begin);
return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
请注意,根据 this Whosebug question,您不需要处理 Stream,因为它将由 FileStreamResult
class.
添加另一个答案,因为我花了太多时间搜索这个:另一种将 SpreadsheetDocument 保存到流的方法是调用 SpreadsheetDocument.Clone(Stream s)
它的好处是可以让您保存到流中,即使您是从不想保存到的文件或流中创建文档的。