簡體   English   中英

如何在.NET中將Excel工作簿寫入MemoryStream?

[英]How to write an Excel workbook to a MemoryStream in .NET?

如何在不先將其保存到文件系統的情況下將Excel工作簿寫入MemoryStream

Microsoft.Office.Interop.Excel.WorkBook保存選項中的所有選項都采用文件名。

我已經完成了PIA的大量工作,並將Excel文件存儲在文檔存儲庫中並將其流式傳輸到瀏覽器,而且我還沒有找到使用PIA的解決方案,而無需先將內容寫入文件系統。

我認為你將不得不吞下子彈並作為中間人處理文件系統。 好消息是你可以給文件一個像guid一樣的唯一名稱,或者使用其他一些tempfilename方法(不確定.net中是否存在),並在完成后刪除內容。

這可以使用Open XML SDK 2.0完成。 Eric White 在使用內存中的Open XML文檔時有一篇關於如何在流中使用OOXML文件的精彩文章

如果您只需要Excel中的基本功能,則可能需要將工作簿創建為Html流。 還有另外一個問題就是這個問題

這也解決了有關解決方案可擴展性的一些問題(您可能還沒有)。

另一種選擇是使用這個免費庫來導出工作簿。 工作簿類上的save方法可以采用文件名或流。

唯一可行的方法是,如果您准備創建一個自定義對象,該對象允許您存儲要保留的所有各種數據/ formula / vba / links / ole對象,從工作簿復制到該對象,然后將該對象持久化到內存流。 在使用您的代理對象作為之間的影響。

(正如其他人所說的)沒有辦法直接將Excel文件寫入內存。

使用Excel 2007 OpenXML格式,您可以使用工作簿的BeforeSave事件來使用自定義方法,該方法首先將BeforeSave事件的Cancel參數設置為True,然后將生成的xml包(表示文件)序列化為對象在記憶中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM