[英]Write to the large docX without loading it in memory file using C# and openXML SDK
我有一個很大的word docx
文件(超過100 MB),它包含一個表格,需要在這個表格中添加額外的數據我使用以下方法
using (WordprocessingDocument wordDocument = WordprocessingDocument.Open(filepath, true))
{
var table = wordDocument.MainDocumentPart.Document.Body.Elements<Table>().First();
foreach (var row in data)
{
var tRow = new TableRow();
foreach (var cell in row)
{
var hCell = new TableCell();
var cPar = new Paragraph(new Run(new Text(cell)));
hCell.Append(cPar);
tRow.Append(hCell);
}
table.Append(tRow);
}
}
似乎整個文檔都已加載到內存中。 有沒有辦法在不加載整個 DOM 結構的情況下寫入文件,例如使用 SAX 方法?
我已經多次嘗試這樣做,但到目前為止我的結論是,不,你不能。
我嘗試了很多方法,甚至使用像 Aspose 這樣的 3rd 方工具,但到目前為止,它們都需要將完整文檔加載到內存中。
這是有道理的,考慮到您必須找到入口點,並且如何在不評估內容的情況下做到這一點,這需要加載內容?
到目前為止,額外開銷最少(但使用最多內存)的方法是使用 VSTO,因此在文檔打開時通過 Word AddIn 使用它。 它提供了最少的額外開銷,因為文檔無論如何都是打開的(用戶已在 Word 中打開它) - 但是如果您需要在沒有用戶操作的情況下執行此操作,或者必須在服務器端完成而不啟動完整的 Word 應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.