我有以下代码通过“SaveAs”将OpenXML SDK的Word文档保存到新文档中。然后我想尝试读取从ASP.Net创建的文件,但是我无法这样做,因为文件被锁定并且在重新启动应用程序池之前不会释放。
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(tempfile, true))
{
wordDoc.ChangeDocumentType(WordprocessingDocumentType.Document);
Body body = wordDoc.MainDocumentPart.Document.Body;
Paragraph para = body.AppendChild(new Paragraph());
Run run = para.AppendChild(new Run());
run.AppendChild(new Text("Testing"));
wordDoc.SaveAs(tempfileMerged);
}
wordDoc是通过使用处理的,但是我不知道如何释放对“SaveAs”生成的文件的锁定,并且我不确定为什么在这种情况下它会在任何情况下都有文件锁? / p>
答案 0 :(得分:4)
你是如此亲密:
wordDoc.SaveAs(tempfileMerged).Close();
答案 1 :(得分:4)
SaveAs
会返回应该关闭的WordprocessingDocument
实例,将其存储在新变量中,然后调用其close方法:
WordprocessingDocument merged = wordDoc.SaveAs(tempfileMerged);
merged.Close();
编辑:您也可以使用类似的方式嵌套第二个。
using (WordprocessingDocument merged = wordDoc.SaveAs(tempfileMerged))
{
merged.Close();
}