C#开源组件DocX处理Word文档基本操作(二)

上一篇 C#开源组件DocX处理Word文档基本操作(一) 介绍了DocX的段落、表格及图片的处理,本篇介绍页眉页脚的处理。

示例代码所用DocX版本为:1.3.0.0。关于版本的情况,请参见上篇。

代码如下:

第一部分:基本的页眉页脚处理(包括图片插入)

        private void DocXSetHeaderFooter(DocX document)
        {
            document.AddHeaders();  //增加页眉
            document.AddFooters();  //增加页脚

            document.DifferentFirstPage = true;         // 首页有不同的页眉页脚
            document.DifferentOddAndEvenPages = true;   // 奇偶页有不同的页眉页脚
            Header header_first = document.Headers.First;   //首页页眉
            Header header_odd = document.Headers.Odd;       //奇数页眉
            Header header_even = document.Headers.Even;     //偶数页眉

            Footer footer_first = document.Footers.First;   //首页页脚
            Footer footer_odd = document.Footers.Odd;       //奇数页脚
            Footer footer_even = document.Footers.Even;     //偶数页脚
            var HFFont = "微软雅黑";

            //首页页眉 header_first
            Paragraph pHeaderFirst = header_first.Paragraphs.Count > 0 ? header_first.Paragraphs.First() : header_first.InsertParagraph();
            pHeaderFirst.AppendPicture(document.AddImage(@"_Word.jpg").CreatePicture());
            pHeaderFirst.Append("首页页眉").Font(HFFont).FontSize(11).Bold().Alignment = Alignment.center;

            //奇数页眉
            Paragraph pHeaderOdd = header_odd.Paragraphs.Count > 0 ? header_odd.Paragraphs.First() : header_odd.InsertParagraph();
            pHeaderOdd.Append("奇数页页眉").Font(HFFont).FontSize(10).Alignment = Alignment.center;
            //偶数页眉
            Paragraph pHeaderEven = header_even.Paragraphs.Count > 0 ? header_even.Paragraphs.First() : header_even.InsertParagraph();
            pHeaderEven.Append("偶数页页眉").Font(HFFont).FontSize(10).Alignment = Alignment.center;

            //首页页脚
            Paragraph pFooterFirst = footer_first.Paragraphs.Count > 0 ? footer_first.Paragraphs.First() : footer_first.InsertParagraph();
            pFooterFirst.Append("第页 共页").Font("微软雅黑").FontSize(10);
            pFooterFirst.InsertPageNumber(PageNumberFormat.normal, 1);
            pFooterFirst.InsertPageCount(PageNumberFormat.normal, 5);  //normal阿拉伯数字   roman罗马数字
            pFooterFirst.Alignment = Alignment.center;

            //奇数页脚
            Paragraph pFooterOdd = footer_odd.Paragraphs.Count > 0 ? footer_odd.Paragraphs.First() : footer_odd.InsertParagraph();            //现在可以同上面一样处理基本的设置,下面是页眉插入表格及奇偶页的不同设置
            DocXSetFooter(pFooterOdd.FontSize(10), HFFont);

            //偶数页脚
            Paragraph pFooterEven = footer_even.Paragraphs.Count > 0 ? footer_even.Paragraphs.First() : footer_even.InsertParagraph();
            //现在可以同上面一样处理基本的设置,下面是页眉插入表格及奇偶页的不同设置            DocXSetFooter(pFooterEven.FontSize(10), HFFont, false);        }

第二部分,页脚表格及奇偶栏内容不同设置(你也可以同样来处理页眉):

        private void DocXSetFooter(Paragraph pFooter, string hfFont = null, bool IsOdd = true)
        {
            Table tbl = pFooter.InsertTableBeforeSelf(1, 3);
            tbl.Design = TableDesign.None; //TableDesign.TableGrid; //
            //tbl.AutoFit =  AutoFit.Contents;//内容   //AutoFit.ColumnWidth;//字段宽度    //AutoFit.Fixed;//固定
            tbl.SetWidthsPercentage(new float[] { 30f, 40f, 30f }, 1500f);
            //tbl.SetWidths(new float[] { 300f, 600f, 300f });

            if (IsOdd)
            {
                tbl.Rows[0].Cells[0].Paragraphs.First().InsertText(DateTime.Now.ToString("yyyy年MM月dd日"));
                tbl.Rows[0].Cells[1].Paragraphs.First().InsertText("这里加入公司名称或其它信息");
                tbl.Rows[0].Cells[2].Paragraphs.First().InsertText("第页 共页");
                tbl.Rows[0].Cells[2].Paragraphs.First().InsertPageNumber(PageNumberFormat.normal, 1);
                tbl.Rows[0].Cells[2].Paragraphs.First().InsertPageCount(PageNumberFormat.normal, 5);
            }
            else
            {
                tbl.Rows[0].Cells[0].Paragraphs.First().InsertText("第页 共页");
                tbl.Rows[0].Cells[0].Paragraphs.First().InsertPageNumber(PageNumberFormat.normal, 1);
                tbl.Rows[0].Cells[0].Paragraphs.First().InsertPageCount(PageNumberFormat.normal, 5);
                tbl.Rows[0].Cells[1].Paragraphs.First().InsertText("这里加入公司名称或其它信息");
                tbl.Rows[0].Cells[2].Paragraphs.First().InsertText(DateTime.Now.ToString("yyyy年MM月dd日"));
            }
            tbl.Rows[0].Cells[0].Paragraphs.First().Font(hfFont).FontSize(10).Alignment = Alignment.left;
            tbl.Rows[0].Cells[1].Paragraphs.First().Font(hfFont).FontSize(10).Alignment = Alignment.center;
            tbl.Rows[0].Cells[2].Paragraphs.First().Font(hfFont).FontSize(10).Alignment = Alignment.right;

            pFooter.Remove(false);  //移去尾部多余的段落
        }

这样可以处理一些需要在页眉页脚进行特殊栏目的设置。

好了,用开源组件DocX来处理Word文档的基本操作就介绍完了,谢谢你能来阅读,并希望能对你有些许帮助,就是我的最大安慰了。

原文地址:https://www.cnblogs.com/hnllhq/p/12230436.html

时间: 2024-10-09 20:26:06

C#开源组件DocX处理Word文档基本操作(二)的相关文章

开源组件DocX导出Word

1.使用Docx替换Word模板里书签里内容的一个方法 using Novacode; public class ExportWord { /// <summary> /// 导出word /// </summary> /// <param name="lBookMarks">书签数据源</param> /// <param name="sTemplatePath">导出Word模板文件</param

Docx 生成word文档二

1 /// <summary> 2 /// 生产word 文档 3 /// </summary> 4 public class GenerateWord 5 { 6 /// <summary> 7 ///模板地址 8 /// </summary> 9 public string TempPath { get; set; } 10 11 /// <summary> 12 /// 保存地址 13 /// </summary> 14 pub

java生成word文档【二】

/** * <p>expWordByItext方法主要用于-采用itext导出文档到word.</p> * <p>优缺点-可将随意控制生成word的格式,但代码控制上比采用模板的方式稍微复杂,可设置页眉页脚等其他文档属性.</p> * <p>第三方jar-itext-2.1.7.jar.itext-rtf-2.1.7.jar.<br> * import com.lowagie.text.Document;<br> * im

C# 复制一个Word文档的部分或全部内容到另一个Word文档

C# 复制一个Word文档的部分或全部内容到另一个Word文档 我最近喜欢折腾Office软件相关的东西,想把很多Office软件提供的功能用.NET来实现,如果后期能把它用来开发一点我自己的小应用程序那就更好了. 扯远了,回到正题.复制文档内容这个功能太常见啦,在微软Word中实现这个功能很简单,只需要复制和粘贴就行了.这篇文章的主要目的是记录如何用C#来实现复制一个Word文档的部分或全部内容到另一个word文档,废话不多说,下面开始. 第一部分:复制部分内容: 在我的这个示例中,复制部分内

打开和写入word文档

一. 使用win32读取word内容 # -*- coding: utf-8 -*- from win32com import client as wc def readDocx2(): word = wc.Dispatch('Word.Application') # 使用WORD应用程序 word.Visible = 0 # 不打开界面 my_worddoc = word.Documents.Open(u'新建文本文档.docx') # 打开word文档 paragraphs = my_wor

转:Java生成带有二维码图片的word文档

(一)功能描述:在智能终端的系统中,对所有学员的信息要生成带有二维码图片的报到证与准考证的word文档 (二)实现过程: 1.创建报到证与准考证的word模板,在模板中填充相应的变量. 2.该模板中存在图片,所以在制作模板中应先在相应的位置放一张图片,调整好大小,起到站位的作用 1.创建报到证与准考证的word模板,在模板中填充相应的变量. 2.在该模板中存在图片,所以在制作模板中应先在相应的位置放一张图片,调整好大小,起到 3.将创建好的模板另存为.xml格式的文件 3.此时的.xml格式的文

使用Spire.Doc组件利用模板导出Word文档

以前一直是用Office的组件实现Word文档导出,但是让客户在服务器安装Office,涉及到版权:而且Office安装,包括权限配置也是比较麻烦. 现在流行使用第三方组件来实现对Office的操作,有NPOI,Spire等第三方组件.开始考虑的是NPOI,毕竟它在操作Excel方面还是很强大的:但是不知道是它本身没有,还是我没找到,无法实现利用Word模板的标签插入内容,纯靠代码去生成Word文档,排版是个大问题.最终找到了Spire.Doc组件,轻松实现! Spire的官网地址:https:

.NET通过调用Office组件导出Word文档

.NET通过调用Office组件导出Word文档 最近做项目需要实现一个客户端下载word表格的功能,该功能是用户点击"下载表格",服务端将该用户的数据查询出来并生成数据到Word模板中,再反馈给客户端下载. 实现思路如下: 利用微软提供的Office的组件来完成,在服务器端指定目录放置一个word模板(该模板中需要替换的数据信息用书签标记好),当请求过来的时候,读取模板信息并将书签内容替换成从数据库获得的信息在返回给客户端下载即可,代码如下: #region 根据申请单ID号和模板生

C# WebForm 使用NPOI 2 生成简单的word文档(.docx)

使用NPOI可以方便的实现服务端对Word.Excel的读写.要实现对Word的读写操作,需要引用NPOI.OOXML.dll,应用命名空间XWPF. 本文使用NPOI 2.0实现对Word的基本生成.下载操作. NOPI 2.0 下载地址:http://npoi.codeplex.com/downloads/get/764162 虽然现在最新版本为NPOI 2.1.1 ,但笔者使用2.1.1的NPOI.OOXML.dll时,发现无法实现段落格式化功能,故推荐使用本文版本. 需要添加的命名空间: