拜托,我想找一个单词,用openXML替换单词doccument中的另一个单词
我使用这种方法
public static void AddTextToWord(string filepath, string txtToFind,string ReplaceTxt)
{
WordprocessingDocument wordDoc = WordprocessingDocument.Open(filepath, true);
string docText = null;
StreamReader sr = new StreamReader(wordDoc.MainDocumentPart.GetStream());
docText = sr.ReadToEnd();
System.Diagnostics.Debug.WriteLine(docText);
Regex regexText = new Regex(txt);
docText = regexText.Replace(docText,txt2);
StreamWriter sw = new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create));
System.Diagnostics.Debug.WriteLine(docText);
wordDoc.Close();
}
但
docText
只返回文档的xml shema页面的头部。
<?xml version="1.0" encoding=.......
答案 0 :(得分:0)
检查字符串
如果您要替换现有内容中的特定字词或词组,您可能只想使用String.Replace()
方法,而不是执行可能无法正常工作的Regex.Replace()
(因为它期望正则表达式而不是传统的字符串)。如果您希望使用正则表达式,这可能无关紧要,但值得注意。
确保您提取内容
Word文档显然不像纯文本一样易于解析,因此为了获得实际的内容,您可能必须使用Document.Body
作为StreamReader
的目标属性而不是使用docText = wordDoc.MainDocumentPart.Document.Body.InnerText;
对象读取:
docText
执行替换
话虽如此,您当前似乎正在阅读文件的内容并将其存储在名为Replace()
的字符串中。由于您拥有该字符串并知道要查找和替换的值,因此请调用docText = docText.Replace(txtToFind,ReplaceTxt);
方法,如下所示:
using (var sw = new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create)))
{
sw.Write(docText);
}
写出您的内容
执行替换后,您只需将更新的文本写入流中:
avatars,