Java使用poi操作ppt
程序员文章站
2022-07-13 12:26:24
...
Java使用poi操作ppt
https://editor.csdn.net/md/?articleId=117926694
上一篇中写了操作文本框和插入图片
这一篇主要是如何在有模板的情况下如替换文本和修改表格
替换表示符号文本
1. 加载模板到对象中
// 模板设置到项目中resources目录下ppt文件夹
ClassPathResource classPathResource = new ClassPathResource("ppt/template.pptx");
InputStream inputStream = classPathResource.getInputStream();
// 设置到poi框架中的对象中XMLSlideShow
XMLSlideShow ppt = new XMLSlideShow(inputStream);
2.替换文本
// 获取模板中的每一页的ppt
List<XSLFSlide> slides = ppt.getSlides();
// 遍历操作
for (XSLFShape shape : shapes) {
if (shape instanceof AutoShape) {
AutoShape autoShape = (AutoShape) shape;
String text = autoShape.getText();
if (text.contains("{YEAR}")) {
TextRun textRun = autoShape.setText(text.replace("{YEAR}", year));
// 设置文本格式
textRun.setFontFamily("黑体");
textRun.setFontSize(36.0);
textRun.setFontColor(Color.RED);
}
}
}
替换表格
表格我直接在模板中设置好了表头
// 获取模板中的每一页的ppt
List<XSLFSlide> slides = ppt.getSlides();
// 遍历操作
for (XSLFShape shape : shapes) {
if (xslfShape instanceof XSLFTable) {
// 获取ppt中表格对象
XSLFTable xslfTable = (XSLFTable) xslfShape;
// 新建一行
XSLFTableRow tableRow = xslfTable.addRow();
XSLFTableCell tableCell1 = tableRow.addCell();
XSLFTextParagraph textParagraph1 = tableCell1.addNewTextParagraph();
XSLFTextRun textRun = textParagraph1.addNewTextRun();
textRun.setText("内容1");
// 文本对齐
textParagraph1.setTextAlign(TextParagraph.TextAlign.CENTER);
// 设置文本样式
setTextRunStyle(textRun);
// 第二个单元格
XSLFTableCell tableCell2 = tableRow.addCell();
// 设置单元格格式
setTableCellStyle(tableCell2);
// 数据第5行的第1 2的单元格合并 参数firstrow lastrow firstCol lastCol
xslfTable.mergeCells(4, 4, 0, 1);
}
}
/**
* @Description: 设置字体样式
* @Author: zhy
* @Date: 2021/6/22 11:30
* @Param: [textRun]
* @return: void
*/
private void setTextRunStyle(XSLFTextRun textRun) {
textRun.setFontSize(12.0);
// 设置黑体
textRun.setBold(false);
// 设置斜体
textRun.setItalic(false);
// 设置字体
textRun.setFontFamily("宋体");
textRun.setFontColor(Color.black);
}
/**
* @Description: 设置单元格的样式
* @Author: zhy
* @Date: 2021/6/24 16:55
* @Param: [tableCell]
* @return: void
*/
private void setTableCellStyle(XSLFTableCell tableCell) {
// 是背景色吗
tableCell.setFillColor(Color.GRAY);
// 垂直对齐方式
tableCell.setVerticalAlignment(VerticalAlignment.MIDDLE);
tableCell.setLeftInset(1);
tableCell.setRightInset(1);
tableCell.setBottomInset(1);
tableCell.setTopInset(1);
// 设置边框的颜色
tableCell.setBorderColor(TableCell.BorderEdge.bottom, Color.BLACK);
tableCell.setBorderColor(TableCell.BorderEdge.top, Color.BLACK);
tableCell.setBorderColor(TableCell.BorderEdge.left, Color.BLACK);
tableCell.setBorderColor(TableCell.BorderEdge.right, Color.BLACK);
}
我这个是因为项目中,需要将一个excel表中导入ppt中,但是没有办法直接导入,所以在ppt中新建一个表格的表头,然后数据查询出来之后,再一行一行的填充。
上一篇: vscode的代码片段
下一篇: java poi ppt操作示例
推荐阅读
-
Java中数组操作 java.util.Arrays 类常用方法的使用
-
Java中使用elasticsearch搜索引擎实现简单、修改等操作
-
java开发中利用POI的 HSSFWorkbook 对excel进行操作
-
java 使用BigDecimal进行货币金额计算的操作
-
Java使用J4L识别验证码的操作方法
-
Java使用J4L识别验证码的操作方法
-
【⭐】Java—Spring-—数据库操作—使用内置连接池,报读取不到驱动错误。Could not load JDBC driver class。
-
Java 使用keytool创建CA证书的操作
-
java使用POI批量导入excel数据的方法
-
Java开发中线程的方法使用操作