OpenXml Dotx到Docx Word发现无法读取的内容



我正在尝试编写代码来填充模板的内容控件,然后将其保存为新文件。

我发现这个非常有用的条目Word OpenXml Word发现了不可阅读的内容并使用了那里的代码。

我从那篇文章中复制了代码,如下所示

public static MemoryStream ReadAllBytesToMemoryStream(string path)
{
byte[] buffer = File.ReadAllBytes(path);
var destStream = new MemoryStream(buffer.Length);
destStream.Write(buffer, 0, buffer.Length);
destStream.Seek(0, SeekOrigin.Begin);
return destStream;
}
public static void Generate()
{
using MemoryStream stream = ReadAllBytesToMemoryStream(@"c:TemplatesTemplateTest.dotx");
using (WordprocessingDocument wpd = WordprocessingDocument.Open(stream, true))
{
wpd.ChangeDocumentType(WordprocessingDocumentType.Document);
}
File.WriteAllBytes(@"c:TemplatesTemplateTestOutput.docx", stream.GetBuffer());
return;
}

它成功地创建了文件,但问题是,每当我打开新的docx文件时,它都会给出"Word Found Unreadable Content;错误我制作的模板并不复杂,它只有3个内容控件,带有用于标签的常规文本。我还试着复制一个只有几行文本的常规docx,同样的错误。

每当我单击"确定"时,在Word Found Unreadable Content错误上,它会显示文档很好。我不确定我做错了什么,我现在甚至没有编辑任何东西。

想出了一个解决方案。

而不是使用File.WriteAllBytes

File.WriteAllBytes(@"C:\TemplatesTemplateTestOutput.docx", stream.GetBuffer());

我使用了以下代码:

using (FileStream fileStream = new FileStream(@"C:\TemplatesTemplateTestOutput.docx", System.IO.FileMode.CreateNew))
{
stream.WriteTo(fileStream);
}

相关内容

最新更新