`
zyplaiai
  • 浏览: 11149 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

使用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("ppt测试.ppt");
	ppt.write(out);
	out.close();
}

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

SlideShow ppt = new SlideShow();
//设置幻灯片大小
ppt.setPageSize(new Dimension(760,600));
SlideMaster master = ppt.getSlidesMasters()[0];       
//设置母板背景,支持多种图片格式
int picIndex = ppt.addPicture(new File("background.png"), Picture.PNG);
Picture background = new Picture(picIndex);
//设置图片位置
background.setAnchor(new java.awt.Rectangle(0, 0, ppt.getPageSize().width
                                               , ppt.getPageSize().height));
master.addShape(background);

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

SlideShow ppt = new SlideShow();
Slide newSlide = ppt.createSlide();
 
//添加幻灯片标题
TextBox title = newSlide.addTitle();
RichTextRun titleRun = title.getTextRun().getRichTextRuns()[0];
titleRun.setFontColor(Color.RED);
title.setText("ppt测试");
 
//添加文本框
TextBox txt = new TextBox();
RichTextRun richTextRun = txt.getTextRun().getRichTextRuns()[0];
richTextRun.setFontColor(Color.BLUE);  
//setText参数字符串可以包含回车、换行符,但是最后一行不能以\r\n结尾,否则设置的格式没有效果(v3.5)
richTextRun.setText("这里可以换行\r\n第二行文本");  		
txt.setAnchor(new java.awt.Rectangle(50,150,400,400));
newSlide.addShape(txt);
 
savePPTFile(ppt);

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

SlideShow ppt = new SlideShow();
Slide newSlide = ppt.createSlide();
int picIndex = ppt.addPicture(new File("图片.jpg"), Picture.JPEG);
Picture jpg = new Picture(picIndex);
 
//set image position in the slide
jpg.setAnchor(new java.awt.Rectangle(360, 200, 280, 260));
 
newSlide.addShape(jpg);
savePPTFile(ppt);

5)插入表格(v3.5)

SlideShow ppt = new SlideShow();
Slide slide = ppt.createSlide();
 
String[][] datas = {
    {"序号", "姓名","年龄"},
    {"1", "张三","30"},
    {"2", "李四","27"},
};
 
//create a table of 3 rows and 3 columns
Table table = new Table(3, 3);
 
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); 
 
slide.addShape(table);
table.moveTo(160,260);
savePPTFile(ppt);

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

SlideShow ppt = new SlideShow(new HSLFSlideShow("PPT测试.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();
    //clear the drawing area
    graphics.setPaint(Color.white);
    graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
 
    //render
    slide[i].draw(graphics);
 
    FileOutputStream out = new FileOutputStream("slide-"  + (i+1) + ".png");
    javax.imageio.ImageIO.write(img, "png", out);
    out.close();

7)提取PPT文档信息

SlideShow ppt = new SlideShow(new HSLFSlideShow("PPT测试.ppt"));
Slide[] slides = ppt.getSlides();
//提取文本信息		 
for (Slide each : slides) {
    System.out.println(each.getTitle()) ;
    TextRun[] textRuns = each.getTextRuns();
    for (int i=0 ;i< textRuns.length; i++ ) {
        System.out.println(textRuns[i].getText());
        RichTextRun[] richTextRuns = textRuns[i].getRichTextRuns();
        for (int j = 0; j < richTextRuns.length; j++) {
            System.out.println(richTextRuns[j].getText());
        }
    }
}
//提取所有JPEG图片
PictureData[] picDatas = ppt.getPictureData();
for (int i=0;i<picDatas.length;i++) {
    if(picDatas[i].getType() == Picture.JPEG){
        FileOutputStream out = new FileOutputStream("jpg_" + i + ".jpg");
        ppt.write(out);
        out.close();
    }
}

8)设置PPT文档摘要信息(文档点击鼠标右键查看属性)

HSLFSlideShow hslf = HSLFSlideShow.create();
DocumentSummaryInformation dsi= hslf.getDocumentSummaryInformation();   
SummaryInformation si= hslf.getSummaryInformation();   
 
dsi.setCompany("yourCompany");  
dsi.setCategory("ppt测试");   
si.setAuthor("yourName");   
si.setTitle("标题");  
 
SlideShow ppt = new SlideShow(hslf);
savePPTFile(ppt);

 

分享到:
评论
5 楼 maizi11 2013-07-02  
你没有发现图片错位了吗?有文字跟图片的时候、图怎么缩小呢
4 楼 pyn0813 2012-04-24  
用POI向PPT中插入图片后,怎么定位删除到PPT上的某一张图片啊。求解....
3 楼 esd28460 2011-12-12  
ppy转化成img时slide[i].draw(graphics);  报错啊:The method draw(Graphics2D) is undefined for the type Slide
2 楼 esd28460 2011-12-12  
ppy转化成img时slide[i].draw(graphics);  报错啊
1 楼 zyplaiai 2011-08-29  
没人理我!!!!我自己来!

相关推荐

    POI操作PPT文档(导入,导出,读取,添加,拼接,替换文本,页面排序)

    本文档将介绍如何使用POI操作PPT文档,包括导入、导出、读取、添加、拼接、替换文本、页面排序等操作。 一、POI操作PPT文档的准备工作 在开始操作PPT文档之前,需要下载并安装Apache POI软件包。可以访问Apache ...

    利用java poi操作ppt

    使用Java POI创建一个新的PPT文档首先需要引入相关的库,例如`poi-ooxml`和`poi-ooxml-schemas`。通过`XSLFSlideShow`类,我们可以创建一个新的PowerPoint演示文稿实例。例如: ```java XMLSlideShow ppt = new ...

    poi操作ppt完整示例程序

    在本示例程序中,我们关注的是如何使用Java和Apache POI库来操作PowerPoint(PPT)文件。POI 提供了丰富的API,使得开发者能够创建、修改、读取和展示PPT文件,而无需依赖Microsoft Office。 首先,我们需要理解...

    poi操作ppt图表史上最完整示例演示.zip

    在这个"poi操作ppt图表史上最完整示例演示.zip"压缩包中,我们主要关注的是如何使用Apache POI库来操作PowerPoint中的图表,包括圆饼图、柱状图、线性图和面积图。这些图表是数据可视化的重要工具,有助于更好地理解...

    poi操作ppt图表.zip

    在这个"poi操作ppt图表.zip"的压缩包中,我们很显然会涉及到如何使用Apache POI库来操作PowerPoint文件中的图表。以下是对这一主题的详细讲解: 首先,Apache POI提供了HSLF(用于低级API,处理老版本的*.ppt文件)...

    poi操作ppt生成图表完整工程.zip

    在本“poi操作ppt生成图表完整工程”中,我们将会深入探讨如何使用Apache POI库来创建和编辑PowerPoint文档中的图表。 首先,我们需要了解Apache POI提供的API。`XSLFSlideShow`是用于创建和修改PowerPoint幻灯片的...

    java实现poi模板生成PPT文件代码

    Java中的Apache POI库是一个强大的工具,用于读取、创建和修改Microsoft Office格式的文件,包括PPT(PowerPoint)文档。在这个项目中,我们将会探讨如何使用POI API来生成PPT文件,特别是通过模板的方式。以下是...

    使用POI读写PowerPoint文件(兼容ppt与pptx版本)

    Apache POI是一个流行的开源Java库,专门用于读写Microsoft Office格式的文件,包括PPT和PPTX。本篇将详细介绍如何使用Apache POI来处理这两种不同版本的PowerPoint文件。 首先,让我们了解一下Apache POI的基本...

    使用poi(3.17)操作ppt中饼状图

    在这个特定的场景中,我们将探讨如何利用POI 3.17版本来操作PowerPoint(PPT)文件,特别是创建饼状图。饼状图是一种常用的可视化工具,用于展示数据中各部分的比例关系。以下是一些关键知识点: 1. **Apache POI ...

    java用poi转ppt为图片和用pdfbox转pdf为图片的demo

    在处理各种文档格式时,如PPT(PowerPoint)和PDF(Portable Document Format),Java提供了强大的库,如Apache POI和PDFBox。这两个库分别用于处理Microsoft Office文档和PDF文件。 Apache POI是Java中的一个开源...

    POI创建PPT文件(有点通用)

    标题中的“POI创建PPT文件(有点通用)”指的是使用Apache POI库来创建PowerPoint (PPT) 文件。Apache POI是Java平台上的一个开源项目,它允许开发者读写Microsoft Office格式的文件,包括Word、Excel和PowerPoint。在...

    使用POI将office(doc/docx/ppt/pptx/xls/xlsx)文件转html格式

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如DOC、DOCX、PPT、PPTX、XLS和XLSX。它提供了Java API,使得开发者能够读取、创建、修改这些文件。在本场景中,我们将讨论如何使用POI将...

    通过POI将PPT插入图片并导出实例

    同时,POI库还提供了丰富的API,允许我们对文字、形状、动画等进行更复杂的操作,从而实现自定义的PPT生成功能。 在实际开发中,如果需要自动化处理大量PPT,可以结合其他工具,如Java的多线程技术,来提高处理效率...

    poi将word、PPT、Excel转pdf实现在线预览的jar包

    首先,Apache POI提供了API,允许开发者以编程方式操作这些文件,例如创建、读取、修改和保存。在处理Word文档时,可以使用HWPF(Hadoop Word Processing Format)和XWPF(XML Word Processing Format)类,分别对应...

    Poi-ppt.zip_885POICOM_PPT模板_javaPPT工具项目_poi ppt

    描述进一步确认了这一点,说明这个项目能够接受模板,并在模板中填入指定内容,从而创建新的PPT文档。 Apache POI是Apache软件基金会的一个开源项目,它提供了API用于读写Microsoft Office格式的文件,包括Word(....

    POI将文件转为html

    在IT行业中,尤其是在数据处理和文档管理领域,Apache POI是一个非常重要的库,它允许开发者使用Java处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。本篇将详细讲解如何利用Apache POI将不同类型的...

    java poi官方文档

    Java POI 是一个开源项目,由Apache软件基金会维护,它为开发者提供了在Java环境中读取、写入和修改Microsoft Office格式文件...通过深入理解并实践文档中的内容,你将能够熟练地利用Java POI进行各种复杂的文件操作。

    Android读取PPT、pptx文档

    3. **打开PPT/PPTX文档**:使用POI提供的API,如`HSLFSlideShow`或`XSLFSlideShow`(对应于老版PPT和新版PPTX)创建一个幻灯片展示对象。 4. **遍历幻灯片**:通过`getSlides()`方法获取幻灯片列表,然后遍历每个...

    poi-ppt.zip_POI_Poi-ppt_poi ImageExtractor_poi源码包

    POI提供了一些优化选项,如使用`POIFSFileSystem`直接操作磁盘上的文件,而不是一次性加载到内存中,以减少内存消耗。 7. **错误处理与兼容性**: POI库对不同版本的Office文件格式有良好的兼容性,但在处理一些复杂...

    POI中文帮助文档_POI_

    这个“POI中文帮助文档”提供了全面的指南,帮助开发者理解和使用POI API来处理这些文件类型。 1. **POI基本概念**: - **HSSF**:用于处理Excel的低级别API,主要支持.xls格式的老版Excel文件。 - **XSSF**:...

Global site tag (gtag.js) - Google Analytics