c# word(1) 向标签处添加文字

如题,c#操作word,向word模版标签处添加文字内容:

        public void word()
        {
            //模板文件
            string templateFile = Path.GetFullPath("../FileWord/w1.docx").Replace("\bin", ""); //模板路径
            //生成的具有模板样式的新文件
            string fileName = Path.GetFullPath("../WordData/w3.docx").Replace("\bin", "");  //另存为的路径

            ExportWord(templateFile, fileName);
        }

        /// <summary>
        /// 调用模板生成word
        /// </summary>
        /// <param name="templateFile">模板文件</param>
        /// <param name="fileName">生成的具有模板样式的新文件</param>
        public void ExportWord(string templateFile, string fileName)
        {
            //生成word程序对象
            Word.Application app = new Word.Application();
            Word.Document doc = new Word.Document();
            try
            {

                //模板文件
                string TemplateFile = templateFile;
                //生成的具有模板样式的新文件
                string FileName = fileName;

                //模板文件拷贝到新文件
                File.Copy(TemplateFile, FileName,true);//允许覆盖同名文件
                //File.Copy(TemplateFile, FileName);//不允许覆盖同名文件
                //生成documnet对象
                
                object Obj_FileName = FileName;
                object Visible = false;
                object ReadOnly = false;
                object missing = System.Reflection.Missing.Value;

                //打开文件
                doc = app.Documents.Open(ref Obj_FileName, ref missing, ref ReadOnly, ref missing,
                    ref missing, ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing, ref Visible,
                    ref missing, ref missing, ref missing,
                    ref missing);
                doc.Activate();

                    //按照标签名称定位标签位置(也可以循环标签进行操作)
                    object WordMarkName = "医院名称";//word模板中的书签名称
                    object what = Word.WdGoToItem.wdGoToBookmark;
                    doc.ActiveWindow.Selection.GoTo(ref what, ref missing, ref missing, ref WordMarkName);//光标转到书签的位置
                    doc.ActiveWindow.Selection.TypeText("XXXX");//插入的内容,插入位置是word模板中书签定位的位置
                                                                //doc.ActiveWindow.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;//设置当前定位书签位置插入内容的格式
                                                                //doc.ActiveWindow.Selection.TypeParagraph();//回车换行

                //输出完毕后关闭doc对象
                object IsSave = true;
                doc.Close(ref IsSave, ref missing, ref missing);
                app.Quit();
                MyHelper.Show("生成“" + FileName + "”成功!", "提示");
            }
            catch (Exception Ex)
            {
                //关闭doc对象
                object IsSave = true;
                object missing = System.Reflection.Missing.Value;
                doc.Close(ref IsSave, ref missing, ref missing);
                app.Quit();
                MyHelper.Show(Ex.ToString(), "提示");
                return;
            }
        }
View Code

附循环标签操作代码:

            foreach (Word.Bookmark bk in doc.Bookmarks)
            {
                if (bk.Name == "name")
                {
                    bk.Range.Text = "Hyman";//插入文字
                }
                else if (bk.Name == "picture")
                {
                    bk.Select();
                    Word.Selection sel = app.Selection;
                    sel.InlineShapes.AddPicture("D:\Test.jpg");//插入图片
                }
            }
View Code
原文地址:https://www.cnblogs.com/xiaoqi123/p/7474512.html