C# 如何替换MS Word文本框中的文本?

C# 如何替换MS Word文本框中的文本?,c#,winforms,ms-word,C#,Winforms,Ms Word,我用C#编写了一个Windows窗体程序。它包含文本框和数据网格 我想将数据导出到Word文件中以使用模板。我在代码中添加了Microsoft Word库 此外,我还在Word文件中创建了文本框“形状”,并将文本放入其中,以便从我的c#程序中查找 现在一切似乎都正常,但我被卡在了C端,我可以替换普通文本,但不能替换“word文件”中文本框中的文本。 这是我的代码: private void FindAndReplace(Word.Application wordapp, object ToFin

我用C#编写了一个Windows窗体程序。它包含文本框和数据网格

我想将数据导出到Word文件中以使用模板。我在代码中添加了Microsoft Word库

此外,我还在Word文件中创建了文本框“形状”,并将文本放入其中,以便从我的c#程序中查找

现在一切似乎都正常,但我被卡在了C端,我可以替换普通文本,但不能替换“word文件”中文本框中的文本。

这是我的代码:

private void FindAndReplace(Word.Application wordapp, object ToFindText, object replaceWithText)

        {
            object matchCase = true;
            object matchWholeWord = true;
            object matchWildCards = false;
            object matchSoundLike = false;
            object matchAllforms = false;
            object forward = true;
            object format = false;
            object matchKashida = false;
            object matchDiactitics = false;
            object matchAlefHamza = false;
            object matchControl = false;
            object matchread_only = false;
            object visible = true;
            object replace = 2;
            object wrap = 1;

            wordapp.Selection.Find.Execute(ref ToFindText,
                ref matchCase, ref matchWholeWord,
                ref matchWildCards, ref matchSoundLike,
                ref matchAllforms, ref forward,
                ref wrap, ref format, ref replaceWithText,
                ref replace, ref matchKashida,
                ref matchDiactitics, ref matchAlefHamza,
                ref matchControl);

        }


        private void CreateWordDocument(object filename, object SaveAs)
        {
            Word.Application wordApp = new Word.Application();
            object missing = Missing.Value;
            Word.Document myWordDoc = null;

            if (File.Exists((string)filename))

            {
                object readOnly = false;
                object isVisible = false;
                wordApp.Visible = false;

                myWordDoc = wordApp.Documents.Open(ref filename, ref missing, ref readOnly,
                    ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing, ref missing);

                myWordDoc.Activate();

                //find and replave
                this.FindAndReplace(wordApp, "<date1>", textBox2.Text);
                this.FindAndReplace(wordApp, "<date2>", textBox3.Text);

            }

            else
            {
                MessageBox.Show("File not found!");
            }

            //Svae as
            myWordDoc.SaveAs2(ref SaveAs, ref missing, ref missing, ref missing,
                ref missing, ref missing, ref missing,
                ref missing, ref missing, ref missing,
                ref missing, ref missing, ref missing,
                ref missing, ref missing, ref missing);


            myWordDoc.Close();
            wordApp.Quit();
            MessageBox.Show("File Created!");


         }
private void find和replace(Word.Application wordapp,object-ToFindText,object-replaceWithText)
{
objectmatchcase=true;
对象匹配wholeword=true;
对象匹配通配符=false;
对象matchSoundLike=false;
对象matchAllforms=false;
对象向前=真;
对象格式=false;
对象matchKashida=false;
objectmatchdiactics=false;
对象匹配alefhamza=false;
对象匹配控件=false;
对象匹配只读=假;
对象可见=真实;
对象替换=2;
对象包裹=1;
wordapp.Selection.Find.Execute(参考FindText,
参考matchCase,参考matchWholeWord,
ref matchWildCards,ref matchSoundLike,
参考matchAllforms,参考forward,
ref wrap、ref格式、ref replaceWithText、,
ref ref replace,ref matchKashida,
参考MatchDiactics,参考matchAlefHamza,
参考匹配控制);
}
私有void CreateWordDocument(对象文件名、对象另存为)
{
Word.Application wordApp=新的Word.Application();
缺少对象=缺少.Value;
Word.Document myWordDoc=null;
如果(File.Exists((字符串)文件名))
{
对象只读=false;
对象isVisible=false;
可见=false;
myWordDoc=wordApp.Documents.Open(ref文件名、ref缺失、ref只读、,
参考缺失,参考缺失,参考缺失,
参考缺失,参考缺失,参考缺失,
参考缺失,参考缺失,参考缺失,
参考缺失、参考缺失、参考缺失、参考缺失);
myWordDoc.Activate();
//查找并重新保存
this.findandplace(wordApp,“,textBox2.Text);
this.findandplace(wordApp,“,textBox3.Text);
}
其他的
{
Show(“找不到文件!”);
}
//Svae as
myWordDoc.SaveAs2(ref SaveAs,ref missing,ref missing,ref missing,ref missing,
参考缺失,参考缺失,参考缺失,
参考缺失,参考缺失,参考缺失,
参考缺失,参考缺失,参考缺失,
参考缺失,参考缺失,参考缺失);
myWordDoc.Close();
wordApp.Quit();
Show(“文件已创建!”);
}

您没有提供足够的信息。什么样的领域?这个词有很多种。此外,为什么不使用书签作为数据目标?还是内容控制?除了这些信息,您还应该向我们展示与Word交互的基本代码。这比您包含的WinForms代码更与问题相关。。。使用问题下方的链接直接向问题添加补充信息,请使用任何类型的字段或书签,我只是想让它正常工作,我没有将可以将数据填充到word文件中的c#代码包括在内,因为我真的不明白它是如何工作的,我删除了所有内容,并希望从头开始理解,我厌倦了很多例子,对我来说没什么用,我从一周开始就在做这个。@Cindymister我刚刚更新了我的问题。你是在使用.doc还是.docx文件?如果是.docx,则应停止使用互操作库并切换到。它更加现代化,不依赖COM,因此您无需担心word.exe的实例因资源清理不当而处于打开状态。在MS word中,文本框是一个形状。因此,您必须遍历这些形状,并找到那些是文本框。然后是一个简单的Shape.Range.Text命令来拾取内容。