"SaveAs" Wordprocessingdocument (打开 XML) 文件已锁定
"SaveAs" Wordprocessingdocument (Open XML) file is locked
我有以下代码可以通过 "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 是通过 using 处理的,但我不确定如何释放对从 "SaveAs" 生成的文件的锁定,并且我不确定为什么在这种情况下它会有文件锁定有活动吗?
你们是如此亲密:
wordDoc.SaveAs(tempfileMerged).Close();
SaveAs
做return一个应该关闭的WordprocessingDocument
实例,把它存入一个新变量然后调用它的close方法:
WordprocessingDocument merged = wordDoc.SaveAs(tempfileMerged);
merged.Close();
编辑:您还可以嵌套第二个使用,例如。
using (WordprocessingDocument merged = wordDoc.SaveAs(tempfileMerged))
{
merged.Close();
}
我有以下代码可以通过 "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 是通过 using 处理的,但我不确定如何释放对从 "SaveAs" 生成的文件的锁定,并且我不确定为什么在这种情况下它会有文件锁定有活动吗?
你们是如此亲密:
wordDoc.SaveAs(tempfileMerged).Close();
SaveAs
做return一个应该关闭的WordprocessingDocument
实例,把它存入一个新变量然后调用它的close方法:
WordprocessingDocument merged = wordDoc.SaveAs(tempfileMerged);
merged.Close();
编辑:您还可以嵌套第二个使用,例如。
using (WordprocessingDocument merged = wordDoc.SaveAs(tempfileMerged))
{
merged.Close();
}