当前位置: 首页 > news >正文

POI操作Docx的踩坑指南(一)

Java的POI库是Apache软件基金会的一个开源项目,全称为Apache POI(Poor Obfuscation Implementation)。提供了Java操作Microsoft Office格式文件(如Word、Excel、PowerPoint等)的功能。

基本概念

Docx文档主要由文档(doc)、表格(table)、段落(paragraph)、运行(run)组成。

POI中表达对象表格:

中文描述表达POI对象
文档docXWPFDocument
表格tableXWPFTable
单元格cellXWPFTableCell
段落paragraphXWPFParagraph
段落中的一部分runXWPFRun

XWPFDocument文档的常用方法

List<XWPFParagraph> getParagraphs():获取文档中所有的段落,注意表格中的段落不会包含在内。

List<XWPFTable> getTables():获取文档中所有的表格。

XWPFParagraph createParagraph():创建一个段落到文档最后。

XWPFParagraph insertNewParagraph(XmlCursor):插入一个段落到指定光标之前。

void write(OutputStream):将文档写入到一个输出流中。

XWPFParagraph段落的常用方法

XWPFRun createRun():在段落中创建一个新运行。

List<XWPFRun> getRuns():获取段落中所有的运行,获取到的运行列表是不可修改的。

String getText():获取段落的文本内容,包括所有运行的文本。

void setIndentationFirstLine(int indentation):设置段落的首行缩进。

void setAlignment(ParagraphAlignment align):设置段落的对齐方式。

void setSpacingBetween(double spacing):设置段落的多倍行距,注意固定值和多倍行距的设置有区别。

XWPFRun运行的常用方法

String text():获取运行的文本内容。

void setText(String value, int pos):设置运行的文本内容,pos是可选参数,如果要设置成空字符串,那pos则必须有。

void setFontSize(double size):设置字体大小。

常用操作

将某一个run替换为空字符串

run.setText("",0);

复制段落字体大小

int fontSize = oldParagraph.getRuns().get(0).getFontSize();
if (fontSize == -1 && oldParagraph.getStyle() != null) {// 从run中没有获取到字体大小XWPFStyle style = oldParagraph.getDocument().getStyles().getStyle(oldParagraph.getStyle());if (style != null && style.getCTStyle().isSetRPr()) {CTHpsMeasure sz = style.getCTStyle().getRPr().getSz();fontSize = sz.getVal().intValue() / 2;}
}
if(fontSize != -1){newParagraph.getRuns().get(0).setFontSize(fontSize);
}

复制段落行高以及段前后间距

// 获取旧段落的CTPPr来操作行高
CTSpacing oldSpacing = oldParagraph.getCTP().getPPr().getSpacing();if (oldSpacing != null) {CTSpacing newSpacing = newParagraph.getCTP().getPPr().isSetSpacing() ?newParagraph.getCTP().getPPr().getSpacing() :newParagraph.getCTP().getPPr().addNewSpacing();// 如果旧段落有固定行高设置,将其复制到新段落if (oldSpacing.isSetLine()) {newSpacing.setLine(oldSpacing.getLine());newSpacing.setLineRule(oldSpacing.getLineRule()); // 确保行高规则也复制}// 复制间距前后设置if (oldSpacing.isSetBefore()) {newSpacing.setBefore(oldSpacing.getBefore());}if (oldSpacing.isSetAfter()) {newSpacing.setAfter(oldSpacing.getAfter());}
}else{newParagraph.setSpacingBetween(oldParagraph.getSpacingBetween());
}

字体、文本颜色等需要根据自己需求添加进去。

http://www.dtcms.com/a/443724.html

相关文章:

  • 建网站免费域名做网站如何适应分辨率
  • 公司网站推广方法DZ做的网站
  • 做地方门户网站的排名佛山知名网站建设公司
  • 深入浅出kafka:kafka演进以及核心功能介绍
  • 360网站安全检测网站维护服务合同
  • 某公司网站源码体验营销案例
  • 怎样在外国网站开发客户昆明网站建设网站建设
  • 请人做网站后台密码公共信息服务平台
  • 网站开发都是用什么做的网站排名推广的优点是什么
  • 软件网站模板个人主页网页设计模板免费
  • godaddy如何创建网站百度搜图片功能
  • 企业做网站天津网站设计与建设实验报告
  • C4D R20新增功能体积对象之雾类型深度解析与应用实践
  • 最长连续序列 Java
  • 做遗嘱的网站有哪些专门找人做软件的网站
  • 电商网站建设系统北京建筑设计公司排行榜
  • 如何制作动漫网站模板下载地址网站怎么做图片动态图片不显示不出来的
  • 网站体验分享cpu占用超出网站空间的分配值
  • 湛江网站建设运营方案极简WordPress个人博客主题
  • 网站开发结论好用的浏览器
  • 可视化网站开发平台如何编写一个网页
  • 电商网站建设网dedecms+wordpress
  • 网站的运营模式爬闪数媒 网站建设
  • 543. 二叉树的直径
  • 服装购物网站排名365建设网站
  • 医院客户做网站找谁程序员外包接单
  • Java中数组的详细讲解,快速理解引用数据类型
  • 长春 网站 设计公司wordpress接收表单
  • 网站首页缩略图 seo齐三seo顾问
  • 网站建设国风网络公司电商分销平台