微软的Office 办公软件在企业的日常办公中占据着重要的地位,人们已经非常熟悉

Office 的使用。在我们开发的应用系统中,常常需要将数据导出到 Excel 文件中,或者

Word 文件中进行打印。比如移动的话费查询系统中就提供了将话费清单导入到 excel 表

格中的功能。这样在web 应用中,我们在浏览器中看到的数据可以被导出到 Excel 中了。

  • Excel 文件: xls 格式文件对应 POI API 为 HSSF 。 xlsx 格式为 office 2007 的文件格式,POI 中对应的API 为XSSF

  • Word 文件:doc 格式文件对应的 POI API 为 HWPF。 docx 格式为 XWPF

  • powerPoint 文件:ppt 格式对应的 POI API 为 HSLF。 pptx 格式为 XSLF

  • outlook :对应的 API 为 HSMF

  • Visio: 对应的 API 为 HDGF

  • Publisher : 对应的 API 为 HPBF

使用POI操作PPT文档


1)如果是创建新的PPT文档,直接使用SlideShow和Slide类就可以,其中SlideShow表示PPT文档,Slide表示某一张幻灯片

创建空的PPT文档:

SlideShow ppt = new SlideShow();

Slide[] slides = ppt.getSlides();

assertTrue(slides.length == 0);

savePPTFile(ppt);

private void savePPTFile(SlideShow ppt) throws Exception{

FileOutputStream out = new FileOutputStream(“d:/test/test.ppt”);

ppt.write(out);

out.close();}

2)设置母版,这样后续的新建幻灯片都将使用母版的字体,背景等设置

SlideShow ppt = new SlideShow();// 设置幻灯片大小

ppt.setPageSize(new Dimension(760, 600));

SlideMaster master = ppt.getSlidesMasters()[0]; // 设置母板背景,支持多种图片格式

int picIndex = 0;

try {

picIndex = ppt.addPicture(new File(“background.png”), Picture.PNG);

} catch (IOException e) {

e.printStackTrace();

}

Picture background = new Picture(picIndex);// 设置图片位置

background.setAnchor(new java.awt.Rectangle(0, 0,

ppt.getPageSize().width, ppt.getPageSize().height));

master.addShape(background);

3)创建幻灯片并插入文本

TextBox txt = new TextBox();// 添加文本框

RichTextRun richTextRun = txt.getTextRun().getRichTextRuns()[0];

richTextRun.setFontColor(Color.BLUE);

richTextRun.setText(“这里可以换行\r\n第二行文本”);// setT

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

ext参数字符串可以包含回车、换行符,但是最后一行不能以\r\n结尾,否则设置的格式没有效果

txt.setAnchor(new java.awt.Rectangle(50, 150, 400, 400));

newSlide.addShape(txt);

savePPTFile(ppt);

4)插入图片,支持多种格式

picIndex = ppt.addPicture(new File(“img/img.jpg”), Picture.JPEG);

Picture jpg = new Picture(picIndex);

jpg.setAnchor(new java.awt.Rectangle(360, 200, 280, 260)); //set image position in the slide

newSlide.addShape(jpg);

5)插入表格

String[][] datas = { { “序号”, “姓名”, “年龄” }, { “1”, “张三”, “30” },

{ “2”, “李四”, “27” } };

Table table = new Table(3, 3); // create a table of 3 rows and 3

// columnsTable

for (int i = 0; i < datas.length; i++) {

for (int j = 0; j < datas[i].length; j++) {

TableCell cell = table.getCell(i, j);

RichTextRun rt = cell.getTextRun().getRichTextRuns()[0];

rt.setFontName(“宋体”);

rt.setFontSize(12);

cell.setVerticalAlignment(TextBox.AnchorMiddle);

cell.setHorizontalAlignment(TextBox.AlignCenter);

cell.setText(datas[i][j]);

if (i == 0) {

cell.setFillColor(Color.GRAY);// 首行背景设置为灰色

}

}

}

Line border = table.createBorder();

border.setLineColor(Color.black);

border.setLineWidth(2.0);

table.setAllBorders(border);

newSlide.addShape(table);

table.moveTo(160, 260);

6)如果是读取已存在的PPT文档则还要用到HSLFSlideShow,下面代码将PPT文件导出为图片(png)格式,如果幻灯片上有中文字符则这些字符的字体需要修改为支持中文的字体(宋体等),否则导出的图片的中文字符不能正常显示

SlideShow ppt = new SlideShow(new HSLFSlideShow(“d:/test/test.ppt”));

Dimension pgsize = ppt.getPageSize();

Slide[] slide = ppt.getSlides();

for (int i = 0; i < slide.length; i++) {

BufferedImage img = new BufferedImage(pgsize.width, pgsize.height,BufferedImage.TYPE_INT_RGB);

Graphics2D graphics = img.createGraphics();

graphics.setPaint(Color.white);// clear the drawing area

graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width,

POI操作Microsoft Office 之 操作PPT简单示例(附源码)相关推荐

  1. 干货分享 | Shader 实现 PPT 转场效果(附源码)

    知乎上看到一位大佬用 Shader 实现了 PPT 里面的转场效果,转载大佬的文章,一起围观膜拜一下. 原文分为上下两篇,详细阐述了每个效果的实现. 上篇:https://zhuanlan.zhihu ...

  2. 一张图学会python3语法-一张图片在Python操作下的4种玩法(附源码)

    from turtle import * #绘制鼻子 defnose(x,y): penup() goto(x,y) pendown() setheading(-30) begin_fill() a= ...

  3. easypoi 批量导出_POI导出大量数据的简单解决方案(附源码)

    说明:我的电脑 2.0CPU 2G内存 能够十秒钟导出 20W 条数据 ,12.8M的excel内容压缩后2.68M 我们知道在POI导出Excel时,数据量大了,很容易导致内存溢出.由于Excel ...

  4. 端点效应的简单复现——附源码

    哈喽,大家好,今天是1024搬砖工的节日,本大佬决定开放源码以庆祝节日,算做福利吧. 上一篇博文说明了端点效应的产生原理,但并未具体说明情况,仍旧会有人问,到底是个啥玩意啊?所以首先要明白这个问题是怎 ...

  5. VB6.0 读取Excel2010简单方法(附源码和注释,可伸手)

    添加一个按钮和CommonDialog控件 如下图 工程引用如下图 源代码: Private Sub Command1_Click()Dim sourceFilePath As StringMe.Co ...

  6. python实现自动发送邮件,同时给多人发送,是工作变的简单(附源码)

    python自动发送邮件,实现同时给多人发送和邮箱轰炸(注意尽量不要轰炸哦,小心封号). 要想自动发送邮件首先需要获得我们邮箱的授权码. 授权码获取  QQ邮箱主页  >设置>账户> ...

  7. ZZNUOJ_用Java编写程序实现1527:简单加法(附源码)

    题目描述 计算一个数与它各位数字之和.   如输入123,123+1+2+3=129:   123456,123456+1+2+3+4+5+6=123477: 输入 输入数据有多组,每组只有一行,包含 ...

  8. 纯HTML加CSS实现3D立体动态相册【超简单、附源码】

    近日,收到一男粉丝私信,具体如下: PS:在跟他聊天过程中,我不该笑的,哪个男同胞没有这么让人心疼的一刻呢.所以,在此祝愿他能早日哄好他的女朋友,加油,奥利给~~~ 于是,在他的万般焦急等待下,为他量 ...

  9. java poi word宏_全面了解POI操作Microsoft Office(Word、Excel、PowerPoint)

    POI 与 Microsoft Office 1. POI 简介 POI 是 Apache 下的 Jakata 项目的一个子项目,主要用于提供 java 操作 Microsoft Office 办公套 ...

  10. Excel操作 Microsoft.Office.Interop.Excel.dll的使用

    原文地址为: Excel操作 Microsoft.Office.Interop.Excel.dll的使用 先说说题外话,前段时间近一个月,我一直在做单据导入功能,其中就涉及到Excel操作,接触Exc ...

最新文章

  1. Asp.net在线压缩和解压缩简单实现(附项目源码)
  2. mysql数据库utf-8编码
  3. BZOJ-1922 大陆争霸 多限制、分层图最短路 (堆+dijkstra)
  4. linux scrapy 定时任务_2019Python学习教程(全套Python学习视频):Scrapy爬虫框架入门...
  5. linux怎么装vnc插件,linux下安装基于GNOME的VNC连接工具Vinagre
  6. MVC入门小示例---淘宝商品的搜索和价格筛选
  7. 拓端tecdat|R语言自适应平滑样条回归分析
  8. 单链表反转--Java实现
  9. Vue Router 重定向和别名
  10. 电脑内存与地址位数的关系
  11. FPGA跨时钟域打两拍和三拍问题
  12. 瀚高数据库适配定时框架Quartz
  13. 快递100一面(Java)
  14. pd.DataFrame转换成list
  15. SpringBoot 统一功能处理
  16. QQ第一位产品经理吴宵光:腾讯17年发展史上的14个关键点
  17. Linux 二进制文件调试命令
  18. vue-router 源码和动态路由权限分配
  19. 2021美团笔试秋招后台高清
  20. mysql 进阶(二)

热门文章

  1. 四种常见的XML解析方式
  2. 学习笔记15--车道线检测
  3. 大数据平台及挖掘调研
  4. si24r1程序_SI24R1技术支持--程序 射频识别(radio frequency indentificationx) - 下载 - 搜珍网...
  5. C语言EasyX_2018中的putimage(x, y, w, h, img, x1, y1)函数
  6. python 批量打印PDF(转)
  7. TMS320C64x DSP L1 L2 Cache架构(1)——C64x Cache Architecture
  8. nssa和stub_OSPF里几个特殊区域(stub、Totally stubby、NSSA、Totally NSSA)总结
  9. WPS如何在Word文档中设置多级的连续的标题编号
  10. w10如何共享计算机硬盘,w10共享盘怎么设置_win10如何共享硬盘