C#创建Word文件 - 打开文件时出错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#创建Word文件 - 打开文件时出错相关的知识,希望对你有一定的参考价值。
我正在使用此代码片段从word模板创建一些word文件(并替换一些单词):
File.Copy(sourceFile, destinationFile, true);
try
{
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(destinationFile, true))
{
string docText = null;
using (StreamReader sr = new StreamReader(wordDoc.MainDocumentPart.GetStream()))
{
docText = sr.ReadToEnd();
}
foreach (KeyValuePair<string, string> item in keyValues)
{
Regex regexText = new Regex(item.Key);
docText = regexText.Replace(docText, item.Value);
}
using (StreamWriter sw = new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create)))
{
sw.Write(docText);
}
}
}
但是当我尝试打开生成的文件时,我收到此错误:
我们很抱歉。我们无法打开XXX.docx,因为我们发现其内容存在问题
XML解析错误位置:部分:/word/document.xml,行:2,列:33686
以下是document.xml
在特定地区的内容:
.....<w:szCs w:val="20"/><w:lang w:val="en-US"/></w:rPr><w:t> </w:t></w:r><w:proofErr w:type="spellEnd"/>....
其中33686是&nbsp的位置。我该如何解决这个问题?
编辑在另一个在相同位置正确生成的文件中,我使用了一些用于测试的随机字符,这些字符也用于文档的标题中
答案
看起来你正在使用正则表达式直接修改XML,这通常会导致难以解决的问题,特别是如果你的任何正则表达式匹配任何可以解释为XML的问题。
作为替代方案,您可能希望更深入地研究WordProcessDocument类。看起来它有类似Paragraph的强类型对象,你可以更安全地修改它。
以上是关于C#创建Word文件 - 打开文件时出错的主要内容,如果未能解决你的问题,请参考以下文章
当我切换到包含片段的活动时应用程序崩溃(二进制 XML 文件第 10 行:二进制 XML 文件第 10 行:膨胀类片段时出错)