C# Microsoft.Office.Interop.Word设置Word页脚之添加当前页数

用C#操作Word,电脑上原生的库为Microsoft.Office.Interop.Word,虽然有些慢,但也能用。操作word的另外一个库是Spire.Doc,但是商业的,破解版也不好搞,还是凑合用Microsoft.Office.Interop.Word吧。
现在需要根据Word模板生成受控报告,主要借助word标签实现该功能。但现在有一个需求,就是需要添加如下格式的页脚:

第   页 共   页
PAGE_OF_

涉及到获取当前页面的页码。查了好多帖子,最后等外网找到了解决方案,那就直接放代码:

        //设置页脚
        /*          第   页 共   页
        *               PAGE_OF_
        */               
        void setFooter(ref Word.Application app)
        {
            object missing = System.Reflection.Missing.Value;

            app.ActiveWindow.ActivePane.View.SeekView = Microsoft.Office.Interop.Word.WdSeekView.wdSeekCurrentPageFooter;
            app.ActiveWindow.ActivePane.Selection.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
            app.ActiveWindow.Selection.TypeText("第");
            Object CurrentPage = Word.WdFieldType.wdFieldPage;
            app.ActiveWindow.Selection.Fields.Add(app.ActiveWindow.Selection.Range, ref CurrentPage, ref missing, ref missing);
            app.ActiveWindow.Selection.TypeText("页 共");            
            Object TotalPages = Word.WdFieldType.wdFieldNumPages;
            app.ActiveWindow.Selection.Fields.Add(app.ActiveWindow.Selection.Range, ref TotalPages, ref missing, ref missing);
            app.ActiveWindow.Selection.TypeText("页\n");

            /*     Insert current page number "Page X of N" on a word document      */
            /*======================================================================*/
            // Open up the footer in the word document
            app.ActiveWindow.ActivePane.View.SeekView = Microsoft.Office.Interop.Word.WdSeekView.wdSeekCurrentPageFooter;
            // Set current Paragraph Alignment to Center
            app.ActiveWindow.ActivePane.Selection.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
            // Type in 'Page '
            app.ActiveWindow.Selection.TypeText("PAGE");
            // Add in current page field
            CurrentPage = Word.WdFieldType.wdFieldPage;
            app.ActiveWindow.Selection.Fields.Add(app.ActiveWindow.Selection.Range, ref CurrentPage, ref missing, ref missing);
            // Type in ' of '
            app.ActiveWindow.Selection.TypeText("OF");
            // Add in total page field
            TotalPages = Word.WdFieldType.wdFieldNumPages;
            app.ActiveWindow.Selection.Fields.Add(app.ActiveWindow.Selection.Range, ref TotalPages, ref missing, ref missing);
            /*======================================================================*/
            
            //跳出页眉页脚设置,否则继续编写word会把内容全部添加到页脚中
            //此段代码根据评论区建议添加,未经测试
            app.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;

        }

自此声明:上面代码用到的库为Microsoft.Office.Interop.Word

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值