问题描述
我有一个合同的模板“保证书.rtf”,内容中有{0},{1}等动态标志。我写了一个替换方法(如下),可是执行到excute时老是提示错误“占位程序接收到错误数据。(异常来自HRESULT:0x800706F7)”///<summary>///Word文本替换///</summary>///<paramname="doc">文档</param>///<paramname="args">要替换的内容</param>publicvoidReplaceWord(Documentdoc,paramsobject[]args){try{objectfirst=0;objectlast=doc.Characters.Count;Rangerange=doc.Range(reffirst,reflast);Microsoft.Office.Interop.Word.Findfinder=range.Find;finder.ClearFormatting();objectmissingValue=Type.Missing;//objectmissingValue=System.Reflection.Missing.Value;//这个东西找了好久,不像操作Excel,用Type.mising还不行.objectreplaceArea=Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll;inti=0;foreach(objectiteminargs){objectfindStr="{"+i+"}";objectreplaceStr=item;//替换内容finder.Execute(reffindStr,refmissingValue,refmissingValue,refmissingValue,refmissingValue,refmissingValue,refmissingValue,refmissingValue,refmissingValue,refreplaceStr,refreplaceArea,refmissingValue,refmissingValue,refmissingValue,refmissingValue);i++;}}catch(Exceptionex){MessageBox.Show(ex.Message,"提示ReplaceWord",MessageBoxButtons.OK,MessageBoxIcon.Error);return;}}
问各位大哥帮下忙,先谢了!或者有没有其它方法可以来实现这个操作的。
解决方案
解决方案二:
用反射的方式调用Execute,暂时没有其他方法。如果是C#4,dynamic不行,但InvokeMethod可以原理我也还没弄懂,期待专家解答。
解决方案三:
解决方案四:
如果就是想替换内容的话,扔到richtextbox里面用自带的方法就可以处理了。richTextBox1.Text="abcdef";richTextBox1.Select(richTextBox1.Text.IndexOf("cd"),2);richTextBox1.SelectedText="xxxx";
解决方案五:
"{{+i.tostring()+"}}",试试
解决方案六:
我也碰到这个问题word2003是对的,在word2007下面就有这个问题了,该怎么解决
解决方案七:
偶也遇到了,楼上各位大侠有没有解决的,请教一下