问题描述
我有一个.docx
文档,其中包含我需要用值替换的子字符串。
我的问题是,通过.docx
读取OpenXML
文件的内容时,单词会分成不同的Run
/ Text
。
我只需要替换所有出现的子字符串。
给出一对键值[(k1,v1),(k2,v2),(k3,v3)]
Docx输入显示为字符串(不知道docx格式生成的xml元素)
"[k1]\t[k2]\n\t[k3]"
所需的输出
"[v1]\t[v2]\n\t[v3]"
像这样的文档的问题是我已经看到OpenXML
将[k1]
截断为[,],k1]
到不同的xml元素。
private Stream ReplaceInDocx(Dictionary<string,string> map,Stream templateStream) {
var memorystream = new MemoryStream();
templateStream.Seek(0,SeekOrigin.Begin);
using (WordprocessingDocument doc = WordprocessingDocument.Open(templateStream,true)) {
using (StreamReader reader = new StreamReader(doc.MainDocumentPart.GetStream())) {
var payload = reader.ReadToEnd();
var result = Enumerable.Aggregate(map,payload,(acc,field) => acc.Replace($"[{field.Key}]",field.Value));
using (var writer = new StreamWriter(memorystream)) {
writer.Write(result);
}
}
memorystream.Seek(0,SeekOrigin.Begin);
return memorystream;
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)