Созданный файл все еще заблокирован
Я использую OpenXML SDK для создания и сохранения документа Word.
Я использую блок "Использование" для создания и удаления потока памяти и текстового объекта документа, когда они будут закончены. Однако при попытке открыть файл я получаю сообщение об ошибке, что файл все еще используется другим процессом. Глядя на Resource Monitor, я смог обнаружить, что это мое приложение на C#, которое по-прежнему остается открытым. Когда я закрываю свое приложение, я могу использовать файл
У меня есть следующий код.
private void button2_Click(object sender, EventArgs e)
{
// Create Stream
using (MemoryStream mem = new MemoryStream())
{
// Create Document
using (WordprocessingDocument wordDocument = WordprocessingDocument.Create(mem, WordprocessingDocumentType.Document, true))
{
// Add a main document part.
MainDocumentPart mainPart = wordDocument.AddMainDocumentPart();
// Create the document structure and add some text.
mainPart.Document = new Document();
Body docBody = new Body();
mainPart.Document.Append(docBody);
wordDocument.SaveAs(@"E:\Report\word.docx");
// Add your docx content here
wordDocument.Close();
}
}
}
Правильно ли я понимаю, что
using (MemoryStream mem = new MemoryStream())
должен утилизировать MemoryStream после завершения блока и, следовательно, разрешить использование файла другим процессом?
Спасибо
1 ответ
SaveAs
возвращает новый объект пакета, представляющий пакет, хранящийся в этом файле. Вам нужно Close
этот пакет тоже.
wordDocument.SaveAs(@"E:\Report\word.docx").Close();