java代码生成word文档(1)[通俗易懂]

Java (95) 2023-05-16 17:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说java代码生成word文档(1)[通俗易懂],希望能够帮助你!!!。

1.编号样式:

word中经常会使用1. 2. 3. 之类的编号,在java自动化生成文档时的实现方式:

static String cTAbstractNumDecimalXML = "<w:abstractNum xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" w:abstractNumId=\"0\">"
+ "<w:multiLevelType w:val=\"hybridMultilevel\"/>"
+ "<w:lvl w:ilvl=\"0\"><w:start w:val=\"1\"/><w:numFmt w:val=\"decimal\"/><w:lvlText w:val=\"%1、\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"720\" w:hanging=\"360\"/></w:pPr></w:lvl>"
+ "<w:lvl w:ilvl=\"1\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"decimal\"/><w:lvlText w:val=\"%1.%2\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"1440\" w:hanging=\"360\"/></w:pPr></w:lvl>"
+ "<w:lvl w:ilvl=\"2\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"decimal\"/><w:lvlText w:val=\"%1.%2.%3\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"2160\" w:hanging=\"360\"/></w:pPr></w:lvl>"
+ "</w:abstractNum>";

XWPFParagraph paragraph = doc.createParagraph();

XWPFRun run = paragraph.createRun();

CTNumbering cTNumbering = CTNumbering.Factory.parse(cTAbstractNumDecimalXML);
CTAbstractNum cTAbstractNum = cTNumbering.getAbstractNumArray(0);
XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);
XWPFNumbering numbering = doc.createNumbering();
BigInteger abstractNumID = numbering.addAbstractNum(abstractNum);
BigInteger numID = numbering.addNum(abstractNumID);

以上代码可以实现编号,效果图:

java代码生成word文档(1)[通俗易懂]_https://bianchenghao6.com/blog_Java_第1张


2. 字体的实现(五号字体):

XWPFParagraph par = doc.createParagraph();
XWPFRun run = par.createRun();
run.setFontFamily("等线");
// 设置五号字体
run.setFontSize(10.5);
run.setColor("FF0000");
run.setText("网络连接正常");

以上代码使用的是POI 5.0的版本。五号字体是word中的常用字体,对应是字体大小数字是10.5,新版本的POI在设置字体大小的setFontSize方法可以设置为double类型,5.0以下版本的POI不支持设置为double类型。

POI5.0可以在maven或者在Apache官网https://poi.apache.org/download.html下载到。

发表回复