C#操作word之写入特殊字符、选择框

在编写word文档的时候常常需要我们输入特殊的符号,比如选择框,打上勾的选择框,或者其他一些特殊字符,如下

一般来说有些字符,其实直接按照原样复制一个,作为替换字符就行了,就像我们上面的最后一个方框,其实可以复制直接粘贴单VS的编辑器中,但是一些

比较特殊的字符,复制到VS的编辑器中是不管用的,最后什么都看不到,对于那些我们就要用其他办法了。总之如果可以直接让其在VS编辑器当做字符显示出来,

那就不要特殊方法了(其实很多字符我们可以通过一些搜狗输入法的,特殊字符选择)

当我们要在word中输入选择框和打钩的选择框,我们可以这样:插入->符号->字体选择“Wingdings 2”。里面就有我们需要的选择框,

这里我们看到我们需要的打钩选择框的,字体是Wingdings 2,然后16进制的字符代码是0052,这样我们就可以利用这个来实现我们需要的字符

用之前同样的模板但是我们希望在性别这一栏采用选中框的方式展现效果,类似这样的

 姓名  张三  性别  
 籍贯  浙江  学历  本科
 家庭地址  浙江省未名市未名区未名街
 电话  12345678  省份证号  123456789012345678
 /// <summary>
        /// 替换word中的文本,并导出word,输出选择框
        /// </summary>
        protected void ReplaceToExcel()
        {           
            Word.Application app = null;
            Word.Document doc = null;
            //将要导出的新word文件名
            string newFile = DateTime.Now.ToString("yyyyMMddHHmmssss") + ".doc";
            string physicNewFile = Server.MapPath(DateTime.Now.ToString("yyyyMMddHHmmssss") + ".doc");
            try
            {
                app = new Word.Application();//创建word应用程序
                object fileName = Server.MapPath("template.doc");//模板文件
                //打开模板文件
                object oMissing = System.Reflection.Missing.Value;
                doc = app.Documents.Open(ref fileName,
                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);

                //构造数据
                Dictionary<string, string> datas = new Dictionary<string, string>();
                datas.Add("{name}", "张三");
                datas.Add("{sex}", "");
                datas.Add("{provinve}", "浙江");
                datas.Add("{address}", "浙江省杭州市");
                datas.Add("{education}", "本科");
                datas.Add("{telephone}", "12345678");
                datas.Add("{cardno}", "123456789012345678");

                object replace = Word.WdReplace.wdReplaceAll;
                foreach (var item in datas)
                {
                    app.Selection.Find.Replacement.ClearFormatting();
                    app.Selection.Find.ClearFormatting();
                    app.Selection.Find.Text = item.Key;//需要被替换的文本
                    if (item.Key == "{sex}")
                    {
                        app.Selection.Find.Replacement.Font.Name = "Wingdings 2";//这里设置字体类型
                        //Wingdings 2字体下的\u0052代表打钩的选择框,\u00A3代表未打钩的选择框
                        if (item.Value == "")
                        {
                            app.Selection.Find.Replacement.Text = "\u0052男\u00A3女";
                        }
                        else
                        {
                            app.Selection.Find.Replacement.Text = "\u00A3男\u0052女";
                        }
                    }
                    else
                    {
                        app.Selection.Find.Replacement.Text = item.Value;//替换文本 
                    }
                    //执行替换操作
                    app.Selection.Find.Execute(
                    ref oMissing, ref oMissing,
                    ref oMissing, ref oMissing,
                    ref oMissing, ref oMissing,
                    ref oMissing, ref oMissing, ref oMissing,
                    ref oMissing, ref replace,
                    ref oMissing, ref oMissing,
                    ref oMissing, ref oMissing);
                }
                //对替换好的word模板另存为一个新的word文档
                doc.SaveAs(physicNewFile,
                oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing,
                oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
            }
            catch (Exception ex)
            {

            }
            finally
            {
                if (doc != null)
                {
                    doc.Close();//关闭word文档
                }
                if (app != null)
                {
                    app.Quit();//退出word应用程序
                }
            }            
        }

原文地址:https://www.cnblogs.com/fuyun2000/p/3138608.html