POI生成Word多级标题格式

article/2024/9/7 19:34:11

文章目录

        • 一、使用模板文件生成标题
          • 1、创建模板文件
          • 2、获得模板文档的整体样式
          • 3、使用标题样式
          • 4、结果展示
        • 二、自定义标题
          • 1、生成标题方法
          • 2、调用生成标题方法
          • 3、结果展示

一、使用模板文件生成标题

1、创建模板文件

新建一个doc文件,如format.doc,创建标题,如标题1、标题2……
在这里插入图片描述

2、获得模板文档的整体样式
// 新建的word文档对象
XWPFDocument doc = new XWPFDocument();
// word整体样式
// 读取模板文档
XWPFDocument template = new XWPFDocument(new FileInputStream("D:\\test\\poi\\word\\format.docx"));
// 获得模板文档的整体样式
CTStyles wordStyles = template.getStyle();
// 获取新建文档对象的样式
XWPFStyles newStyles = doc.createStyles();
// 关键行// 修改设置文档样式为静态块中读取到的样式
newStyles.setStyles(wordStyles);
3、使用标题样式
// 标题1,1级大纲
XWPFParagraph para1 = doc.createParagraph();
// 关键行// 1级大纲
para1.setStyle("1");
XWPFRun run1 = para1.createRun();
// 标题内容
run1.setText("标题1");// 标题2,2级大纲
XWPFParagraph para2 = doc.createParagraph();
// 关键行// 2级大纲
para2.setStyle("2");
XWPFRun run2 = para2.createRun();
// 标题内容
run2.setText("标题2");// 正文
XWPFParagraph paraX = doc.createParagraph();
XWPFRun runX = paraX.createRun();
for(int i=0;i<100;i++) {// 正文内容runX.setText("正文\r\n");
}// word写入到文件
FileOutputStream fos;
try {fos = new FileOutputStream("D:\\test\\poi\\word\\test.docx");doc.write(fos);fos.close();
} catch (Exception e) {// TODO 自动生成的 catch 块e.printStackTrace();
}
4、结果展示

在这里插入图片描述

二、自定义标题

1、生成标题方法
 /*** * @param doc* @param styles* @param strStyleId	标题id* @param headingLevel	标题级别* @param pointSize	字体大小(/2)* @param hexColor	字体颜色* @param typefaceName	字体名称(默认宋体)*/public void createHeadingStyle(XWPFDocument doc, XWPFStyles styles, String strStyleId, int headingLevel, int pointSize, String hexColor, String typefaceName) {//创建样式CTStyle ctStyle = CTStyle.Factory.newInstance();//设置idctStyle.setStyleId(strStyleId);CTString styleName = CTString.Factory.newInstance();styleName.setVal(strStyleId);ctStyle.setName(styleName);CTDecimalNumber indentNumber = CTDecimalNumber.Factory.newInstance();indentNumber.setVal(BigInteger.valueOf(headingLevel));// 数字越低在格式栏中越突出ctStyle.setUiPriority(indentNumber);CTOnOff onoffnull = CTOnOff.Factory.newInstance();ctStyle.setUnhideWhenUsed(onoffnull);// 样式将显示在“格式”栏中ctStyle.setQFormat(onoffnull);// 样式定义给定级别的标题CTPPr ppr = CTPPr.Factory.newInstance();ppr.setOutlineLvl(indentNumber);ctStyle.setPPr(ppr);XWPFStyle style = new XWPFStyle(ctStyle);CTHpsMeasure size = CTHpsMeasure.Factory.newInstance();size.setVal(new BigInteger(String.valueOf(pointSize)));CTHpsMeasure size2 = CTHpsMeasure.Factory.newInstance();size2.setVal(new BigInteger(String.valueOf(pointSize)));CTFonts fonts = CTFonts.Factory.newInstance();if(typefaceName == null || typefaceName.equals("")) typefaceName = "宋体";fonts.setAscii(typefaceName);	//字体CTRPr rpr = CTRPr.Factory.newInstance();rpr.setRFonts(fonts);rpr.setSz(size);rpr.setSzCs(size2);	//字体大小CTColor color=CTColor.Factory.newInstance();color.setVal(hexToBytes(hexColor));rpr.setColor(color);	//字体颜色style.getCTStyle().setRPr(rpr);// is a null op if already definedstyle.setType(STStyleType.PARAGRAPH);styles.addStyle(style);}public static byte[] hexToBytes(String hexString) {HexBinaryAdapter adapter = new HexBinaryAdapter();byte[] bytes = adapter.unmarshal(hexString);return bytes;}
2、调用生成标题方法
// 新建的word文档对象
XWPFDocument doc = new XWPFDocument();
// 获取新建文档对象的样式
XWPFStyles newStyles = doc.createStyles();
String heading1 = "My Heading 1";
docUtils.createHeadingStyle(doc, newStyles, heading1, 1, 45, "000000", "宋体");
XWPFParagraph para1 = doc.createParagraph();
para1.setStyle("My Heading 1");
XWPFRun run1 = para1.createRun();
run1.setText("My Heading 1");
// word写入到文件
FileOutputStream fos;
try {fos = new FileOutputStream("D:\\test\\poi\\word\\test.docx");doc.write(fos);fos.close();
} catch (Exception e) {// TODO 自动生成的 catch 块e.printStackTrace();
}
3、结果展示

在这里插入图片描述
参考文章:

  • 如何使用Apache POI为docx文件中的段落设置标题样式?
  • Apache POI自动生成Word文档

http://chatgpt.dhexx.cn/article/kRhiIy7A.shtml

相关文章

Word标题样式设置多级自动编号

0x01 问题起源 有时候在写论文时需要设置自动编号&#xff0c;手动标记一来太多&#xff0c;太麻烦&#xff0c;二来牵一发而动全身&#xff0c;不易修改。 Word的标题样式好用&#xff08;如上图&#xff09;&#xff0c;可以方便设置同一级标题的样式&#xff0c;但是在标题…

wps word设置多级标题及对应目录

■目标是文档含有多级标题&#xff0c;目录只显示到二级标题 原始文件如下&#xff1a; 1.尝试逐个设置不同级别标题&#xff0c;格式刷完成多级标题 按照上述方式&#xff0c;已设置完成三种级别标题&#xff0c;格式刷完成全文标题复制&#xff0c;如下 选择对应标题行设…

Word多级标题以及图片序号管理方法

在写毕业论文时&#xff0c;我们为了更好的管理这样一个庞大的内容&#xff0c;通常需要应用【多级标题】功能。具体使用方法如下所示&#xff1a; Step1&#xff1a;点击【段落】→【多级列表】→【定义多级列表】 Step2&#xff1a;在打开的界面中&#xff0c;点击左下的【更…

word制作多级标题目录

目录 1.插入页码 2.制作标题样式 2.1 修改样式&#xff0c;点击右键修改样式 标题1 段落设置段前段后0.5行&#xff0c;缩进随意设置&#xff0c;行距改成 单倍行距 依次设置标题1 标题2 标题3&#xff0c;按照 &#xff08;段前段后可以根据实际更改&#xff09; 3.多…

word 多级标题的编辑

用Word编写文档的人都知道&#xff0c;一篇长文档一般是需要分章节来划分段落的。在Word中也有对应的工具来完成这项任务&#xff0c;这就是多级列表。然而绝大多数使用Microsoft Office的朋友却并不知道Word有这么个工具&#xff1b;或者即使知道&#xff0c;却对如何正确使用…

Word多级标题设置,一级标题是汉字数字,其他级别是阿拉伯数字

1.分别设计各个标题格式 2.创建多级列表&#xff0c;此时会这样 3.在需要用到的标题级别下将“正规形式编号”勾上

word多级标题下一级和上一级没有关联上

word多级标题下一级和上一级没有关联 标题间多级编号没有关联&#xff0c;可能出现下面这种情况&#xff1a; 1 1.1 1.2 2 1.1 1.2 … 解决办法也很简单&#xff0c;每一级标题编号都要勾选下图两个选项即可。

Word多级标题出现黑块的解决思路

1.问题背景 在写word文档的过程中&#xff0c;今天打开突然发现四级标题出现了黑块的情况。 2.问题排查 2.1 样式 通过查看标题4的样式&#xff0c;对于字号、字体、格式中的段落、编号均无异样。 2.2 多级标题排查 我们依次点击多级标题->定义新的多级标题&#xff0c;…

Word多级标题设置和自动生成目录

在用word写学位论文或比较长的报告的时候&#xff0c;经常在写完主要内容后要设置多级标题的格式并自动生成目录&#xff0c;这里记录分享一下自己的一些经验&#xff0c;虽然不一定是最佳的方法&#xff0c;但理解起来比较简单&#xff0c;也能比较有效的解决问题。主要思路就…

word中设置多级标题

最近在写论文&#xff0c;需要用到如下格式的标题 第一章 1.1 xxx 1.1.1 xxx 1.1.1.1 xxx 1.1.1.2 xxx 1.1.2 xxx 1.2 xxx 1.2.1 xxx 1.2.2 xxx 那么&#xff0c;在word中如何进行设置呢&#xff1f; 光标放置在某个标题的位置&#xff0c;点击段落中的“多级列表”&a…

word:多级标题快捷生成

word多级标题未自动编号&#xff0c;如何快速定义多级标题 word多标题多级标题错误编号情况1.一级标题创建2.创建二级标题3.创建3级标题出错4.级标题快捷生成 word多标题 在编辑文档的时候为了让文章看上去逻辑条理清晰&#xff0c;就会用到多级标题。但常常不知道多级怎么定义…

word多级标题

当我们在写论文的时候&#xff0c;要经常设置多级标题。有时候不知道为什么会出现一级标题下的二级标题不自动跟着一级标题变动的情况。如下图 它4.1之后应该是4.1.1 &#xff0c;然后再后面应该是4.1.2。但是它不知道为什么变成1.1.1了&#xff0c;百度上的方法都告诉我要设置…

word设置多级混合标题(自动编号、交叉引用、题注 图1-1)

简介 若要攥写含图表的多章节文档&#xff08;例如书籍&#xff09;&#xff0c;可使用图表所在章节的编号作为图表题注的前缀。 例如&#xff0c;第五章的第三个图表可能标记为“图 5-3”。然而&#xff0c;按照Word官方文档教程会发现&#xff0c;生成的题注是“图五-3”&am…

NMEA 0183语句经度、纬度 度分格式转度度格式计算方法

NMEA 0183协议输出的经度、纬度格式是度分格式,经度dddmm.mmmm、纬度ddmm.mmmm,在地图使用中格式是度度格式&#xff0c;所以需要进行转换。 具体转换方法如下&#xff1a; #include "stdio.h" #include "math.h"double GpsDataDmToDd(double data) {dou…

北斗/GPS模块输出的NMEA 0183语句详解

NMEA - 0183 是美国国家海洋电子协会&#xff08;National Marine Electronics Association&#xff09;为海用电子设备制定的标准格式。目前业已成了 GPS/北斗导航设备统一的 RTCM&#xff08;Radio Technical Commission for Maritime services&#xff09;标准协议。 NMEA-…

STM32的GPS数据提取程序设计说明——基于NMEA0183协议

一、硬软件平台 本次程序实现效果为对GPS信号穿送来的数据进行筛选&#xff0c;并将筛选后的信息通过上位机显示出来&#xff0c;所以此次设计所需硬件包括STM32F407、RS232转TTL、CH340USB转串口模块&#xff0c;注意该模块在使用前&#xff0c;对应的系统需要安装驱动&#…

GPS模块编程之NMEA0183协议

原文地址&#xff1a;https://blog.csdn.net/northcan/article/details/7261310 NMEA 0183是美国国家海洋电子协会&#xff08;National Marine Electronics Association&#xff09;为海用电子设备制定的标准格式。现在已经成为GPS导航设备统一的RTCM&#xff08;Radio Techni…

NMEA 0183 校验计算方法

每一行末尾的“星号”后面都有两位校验&#xff0c;是本行字符串中将“美元符号”和“星号”之间的每一个字符从左至右依次进行异或等于运算而得到的 $GPGSV,2,2,07,24,71,118,51,27,02,300,37,32,08,258,4141 $GLGSV,2,1,07,66,46,058,48,82,29,260,44,76,43,059,47,77,38,150…

获取原始NMEA 0183语句的方法

MEA0183语句是从卫星上广播的含有丰富信息的原始GPS语句&#xff0c;它的语法为海用电子设备的标准格式。它所含的信息量远远不止位置坐标&#xff0c;开发和利用这些信息可能会带来意想不到的商机。比如&#xff0c;它发出的时间信息已经被很多钟表厂商利用&#xff0c;开发出…

从NMEA0183到GNSS定位数据获取(二)软件篇

总述 GPS我们都知道&#xff0c;一种用来全球定位的系统&#xff0c;后来俄罗斯推出了格洛纳斯定位系统&#xff0c;中国推出了北斗定位&#xff0c;欧盟有伽利略&#xff0c;印度与日本也有有发展。所以后来把覆盖全球的自主地利空间定位的卫星系统成为GNSS。 现在卫星定位那么…