NPOI 操作word 创建页眉页脚,页眉中插入图片

news/2024/11/29 12:44:31/

使用NPOI操作word,在制作页眉页脚中有个特殊的需求,在页眉中插入图片,在网上查找许久,终于是有个可以实现在也没中插入图片,但是是以inline方式在页眉中,这种方式不能很好的满足图片位置的调整,需要修改源码,加上可以设置锚点的方式插入图片(还没有实现,实现了再来记录

1,在页眉中插入图片所使用的NPOI版本是 https://download.csdn.net/download/dengxt/10824550

结果图如上:

2,非插入图片,页眉页脚都是文字

XWPFDocument m_Docx = new XWPFDocument();//创建文档
m_Docx.Document.body.sectPr = new CT_SectPr();
CT_SectPr m_SectPr = m_Docx.Document.body.sectPr;//创建页脚
CT_Ftr m_ftr = new CT_Ftr();m_ftr.AddNewP().AddNewR().AddNewT().Value = "我是页脚";
//创建页脚关系(footern.xml)
XWPFRelation Frelation = XWPFRelation.FOOTER;
XWPFFooter m_f = (XWPFFooter)m_Docx.CreateRelationship(Frelation, XWPFFactory.GetInstance(), m_Docx.FooterList.Count + 1);//设置页脚
m_f.SetHeaderFooter(m_ftr);
CT_HdrFtrRef m_HdrFtr1 = m_SectPr.AddNewFooterReference();m_HdrFtr1.type = ST_HdrFtr.@default;
m_HdrFtr1.id = m_f.GetPackageRelationship().Id;//创建页眉
CT_Hdr m_Hdr = new CT_Hdr();
m_Hdr.AddNewP().AddNewR().AddNewT().Value = "我是页眉";//页眉内容
//创建页眉关系(headern.xml)
XWPFRelation Hrelation = XWPFRelation.HEADER;
XWPFHeader m_h = (XWPFHeader)m_Docx.CreateRelationship(Hrelation, XWPFFactory.GetInstance(), m_Docx.HeaderList.Count);
//设置页眉
m_h.SetHeaderFooter(m_Hdr);
CT_HdrFtrRef m_HdrFtr2 = m_SectPr.AddNewHeaderReference();
m_HdrFtr2.type = ST_HdrFtr.@default;
m_HdrFtr2.id = m_h.GetPackageRelationship().Id;//保存文件
string docPath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "DocxWord");
if (!Directory.Exists(docPath)) { Directory.CreateDirectory(docPath); }
string fileName = string.Format("{0}.doc", DateTime.Now.ToString("yyyyMMddHHmmssfff"));
FileStream out1 = new FileStream(Path.Combine(docPath, fileName), FileMode.Create);
m_Docx.Write(out1);
out1.Close();

3,页眉插入图片,页脚文字

XWPFDocument m_Docx = new XWPFDocument();
m_Docx.Document.body.sectPr = new CT_SectPr();CT_SectPr m_SectPr = m_Docx.Document.body.sectPr;//创建页脚
CT_Ftr m_ftr = new CT_Ftr();
m_ftr.AddNewP().AddNewR().AddNewT().Value = "im yejiao";//页脚内容//创建页脚关系(footern.xml)
XWPFRelation Frelation = XWPFRelation.FOOTER;
XWPFFooter m_f = (XWPFFooter)m_Docx.CreateRelationship(Frelation, XWPFFactory.GetInstance(), m_Docx.FooterList.Count + 1);//设置页脚
m_f.SetHeaderFooter(m_ftr);
CT_HdrFtrRef m_HdrFtr1 = m_SectPr.AddNewFooterReference();
m_HdrFtr1.type = ST_HdrFtr.@default;
m_HdrFtr1.id = m_f.GetPackageRelationship().Id;//创建页眉
CT_Hdr m_Hdr = new CT_Hdr();
// m_Hdr.AddNewP().AddNewR().AddNewT().Value = "im yemei";//页眉内容
//创建页眉关系(headern.xml)
XWPFRelation Hrelation = XWPFRelation.HEADER;
XWPFHeader m_h = (XWPFHeader)m_Docx.CreateRelationship(Hrelation, XWPFFactory.GetInstance(), m_Docx.HeaderList.Count);
//设置页眉
m_h.SetHeaderFooter(m_Hdr);
CT_HdrFtrRef m_HdrFtr2 = m_SectPr.AddNewHeaderReference();
m_HdrFtr2.type = ST_HdrFtr.@default;
m_HdrFtr2.id = m_h.GetPackageRelationship().Id;m_Docx.Document.body.sectPr = new CT_SectPr();
m_SectPr = m_Docx.Document.body.sectPr;
//页面设置A4横向
//m_SectPr.pgSz.w = (ulong)16838;
//m_SectPr.pgSz.h = (ulong)11906;// Add the picture + relationship
FileStream pictureData = null;
pictureData = new FileStream("../../image/3.jpeg", FileMode.Open, FileAccess.Read);//设置页眉
m_h.SetHeaderFooter(m_Hdr);
m_h.AddPicture(pictureData, (int)PictureType.JPEG, "3.jpeg", 7000000, 1000000);
CT_HdrFtrRef m_HdrFtr = m_SectPr.AddNewHeaderReference();
m_HdrFtr.type = ST_HdrFtr.@default;
m_HdrFtr.id = m_h.GetPackageRelationship().Id;//保存文件到磁盘WinForm  
string docPath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "DocxWord");
if (!Directory.Exists(docPath)) { Directory.CreateDirectory(docPath); }
string fileName = string.Format("{0}.doc", DateTime.Now.ToString("yyyyMMddHHmmssfff"));
FileStream out1 = new FileStream(Path.Combine(docPath, fileName), FileMode.Create);
m_Docx.Write(out1);
out1.Close();

收集的使用NPOI操作word的文档,还是比较适用的文档 https://download.csdn.net/download/dengxt/10823924


http://www.ppmy.cn/news/653800.html

相关文章

word如何删除页脚页眉?

Word文档是办公软件之一,在工作的时候经常用的到,但是我们发现,在使用的过程中会发现word里面的头部和尾部都有一条横线,大部分小伙伴都觉得碍眼且影响整体美观度,这就是页脚和页眉!如何删除页脚页眉&#…

美赛论文的页眉设置

数学建模,一天一个office小技巧。 需求:人家论文要求是这样式儿的 解决:详参百度经验(●’◡’●)→点击!

python 操作word 修改页眉与页脚

# -*- coding: utf-8 -*- # Time : 2022年05月01日 19时59分 # File : doctemp.py # notice :from docxtpl import DocxTemplate data_dic { t1:燕子, t2:杨柳, t3:桃花, t4:针尖, t5:头涔涔, t6:泪潸潸, t7:茫茫然, t8:伶伶俐俐, 报告日期:2008-11-22, 报告编号:A…

ctextart类的文档仅仅首页修改页眉

问题描述 本文所举的例子虽然针对的是ctexart类产生的文档,对其他的类,如article等,同样是使用的。在本文中没有进行验证。 问题的是这样产生的:当你写了一篇论文,编辑提出了修改意见,要求你在首页的页眉…

Latex 只在首页添加页眉页脚 修改局部字体大小

Q:遇到了奇怪的要求,要求只在文章首页右上角和左下角添加文字。 A: \usepackage{fancyhdr} %使用fancyhdr包\maketitle %一定要在maketitle后面添加以下内容\thispagestyle{fancy} %更改plain状态&#x…

java 页眉页脚_Java 添加Word页眉、页脚

本篇文章将介绍通过java程序来添加Word页眉页脚的方法。鉴于在不同文档中,对页眉页脚的操作要求不同,文章将分别从以下几种情况来阐述: 1.添加页眉页脚 添加图片到页眉 添加文本到页眉 添加页码 2.设置奇偶页不同的页眉页脚 3.设置首页页眉页脚不同 4.不连续设置页码(即对不…

删除首页页眉

弄论文又学会了点word的东西,呵呵。 把光标放在第二页,或者第一页最后一行。插入——分隔符——注意,这里我们应该选择的是“分节符类型”里面的“下一页”。 接着,就可以删除首页的页眉了。 如果这样不行,那就在删…

LateX正文与首页页眉线分别为单双线的设置方法

转自:http://blog.sina.com.cn/s/blog_5e16f1770100me8u.html 说明:正文页眉格式\pagestyle{fancy},首页(标题页)\fancypagestyle{plain} 我们知道使用fancyhdr宏包可以很轻松的设置首页(标题页)与正文页眉不同,这其中也包 括页眉…