`
ningwuyu
  • 浏览: 49144 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

poi操作ppt

    博客分类:
  • java
阅读更多
1)如果是创建新的PPT文档,直接使用SlideShow和Slide类就可以,其中SlideShow表示PPT文档,Slide表示某一张幻灯片
如下代码创建空的PPT文档:

Java代码
1.SlideShow ppt = new SlideShow();  
2.Slide[] slides = ppt.getSlides();  
3.assertTrue(slides.length == 0);  
4.savePPTFile(ppt);  
5.   
6.private void savePPTFile(SlideShow ppt) throws Exception{  
7.         FileOutputStream out = new FileOutputStream("ppt测试.ppt");  
8.    ppt.write(out);  
9.    out.close();  
10.} 
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)设置母版,这样后续的新建幻灯片都将使用母版的字体,背景等设置

Java代码
1.SlideShow ppt = new SlideShow();  
2.//设置幻灯片大小  
3.ppt.setPageSize(new Dimension(760,600));  
4.SlideMaster master = ppt.getSlidesMasters()[0];         
5.//设置母板背景,支持多种图片格式  
6.int picIndex = ppt.addPicture(new File("background.png"), Picture.PNG);  
7.Picture background = new Picture(picIndex);  
8.//设置图片位置  
9.background.setAnchor(new java.awt.Rectangle(0, 0, ppt.getPageSize().width  
10.                                               , ppt.getPageSize().height));  
11.master.addShape(background); 
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)创建幻灯片并插入文本

Java代码
1.SlideShow ppt = new SlideShow();  
2.Slide newSlide = ppt.createSlide();  
3.   
4.//添加幻灯片标题  
5.TextBox title = newSlide.addTitle();  
6.RichTextRun titleRun = title.getTextRun().getRichTextRuns()[0];  
7.titleRun.setFontColor(Color.RED);  
8.title.setText("ppt测试");  
9.   
10.//添加文本框  
11.TextBox txt = new TextBox();  
12.RichTextRun richTextRun = txt.getTextRun().getRichTextRuns()[0];  
13.richTextRun.setFontColor(Color.BLUE);    
14.//setText参数字符串可以包含回车、换行符,但是最后一行不能以\r\n结尾,否则设置的格式没有效果(v3.5)  
15.richTextRun.setText("这里可以换行\r\n第二行文本");           
16.txt.setAnchor(new java.awt.Rectangle(50,150,400,400));  
17.newSlide.addShape(txt);  
18.   
19.savePPTFile(ppt); 
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)插入图片,支持多种格式

Java代码
1.SlideShow ppt = new SlideShow();  
2.Slide newSlide = ppt.createSlide();  
3.int picIndex = ppt.addPicture(new File("图片.jpg"), Picture.JPEG);  
4.Picture jpg = new Picture(picIndex);  
5.   
6.//set image position in the slide  
7.jpg.setAnchor(new java.awt.Rectangle(360, 200, 280, 260));  
8.   
9.newSlide.addShape(jpg);  
10.savePPTFile(ppt); 
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)

Java代码
1.SlideShow ppt = new SlideShow();  
2.Slide slide = ppt.createSlide();  
3.   
4.String[][] datas = {  
5.    {"序号", "姓名","年龄"},  
6.    {"1", "张三","30"},  
7.    {"2", "李四","27"},  
8.};  
9.   
10.//create a table of 3 rows and 3 columns  
11.Table table = new Table(3, 3);  
12.   
13.for (int i = 0; i < datas.length; i++) {  
14.    for (int j = 0; j < datas[i].length; j++) {  
15.        TableCell cell = table.getCell(i, j);  
16.   
17.        RichTextRun rt = cell.getTextRun().getRichTextRuns()[0];  
18.        rt.setFontName("宋体");  
19.        rt.setFontSize(12);  
20.   
21.        cell.setVerticalAlignment(TextBox.AnchorMiddle);  
22.        cell.setHorizontalAlignment(TextBox.AlignCenter);  
23.        cell.setText(datas[i][j]);  
24.   
25.        if(i == 0){//首行背景设置为灰色  
26.             cell.setFillColor(Color.GRAY);  
27.        }                   
28.    }  
29.}  
30.   
31.Line border = table.createBorder();  
32.border.setLineColor(Color.black);  
33.border.setLineWidth(2.0);  
34.table.setAllBorders(border);   
35.   
36.slide.addShape(table);  
37.table.moveTo(160,260);  
38.savePPTFile(ppt); 
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)格式,如果幻灯片上有中文字符则这些字符的字体需要修改为支持中文的字体(宋体等),否则导出的图片的中文字符不能正常显示

Java代码
1.SlideShow ppt = new SlideShow(new HSLFSlideShow("PPT测试.ppt"));  
2.Dimension pgsize = ppt.getPageSize();  
3.Slide[] slide = ppt.getSlides();  
4.   
5.for (int i = 0; i < slide.length; i++) {  
6.    BufferedImage img = new BufferedImage(pgsize.width, pgsize.height  
7.                                               , BufferedImage.TYPE_INT_RGB);  
8.    Graphics2D graphics = img.createGraphics();  
9.    //clear the drawing area  
10.    graphics.setPaint(Color.white);  
11.    graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));  
12.   
13.    //render  
14.    slide[i].draw(graphics);  
15.   
16.    FileOutputStream out = new FileOutputStream("slide-"  + (i+1) + ".png");  
17.    javax.imageio.ImageIO.write(img, "png", out);  
18.    out.close(); 
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文档信息

Java代码
1.SlideShow ppt = new SlideShow(new HSLFSlideShow("PPT测试.ppt"));  
2.Slide[] slides = ppt.getSlides();  
3.//提取文本信息           
4.for (Slide each : slides) {  
5.    System.out.println(each.getTitle()) ;  
6.    TextRun[] textRuns = each.getTextRuns();  
7.    for (int i=0 ;i< textRuns.length; i++ ) {  
8.        System.out.println(textRuns[i].getText());  
9.        RichTextRun[] richTextRuns = textRuns[i].getRichTextRuns();  
10.        for (int j = 0; j < richTextRuns.length; j++) {  
11.            System.out.println(richTextRuns[j].getText());  
12.        }  
13.    }  
14.}  
15.//提取所有JPEG图片  
16.PictureData[] picDatas = ppt.getPictureData();  
17.for (int i=0;i<picDatas.length;i++) {  
18.    if(picDatas[i].getType() == Picture.JPEG){  
19.        FileOutputStream out = new FileOutputStream("jpg_" + i + ".jpg");  
20.        ppt.write(out);  
21.        out.close();  
22.    }  
23.} 
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文档摘要信息(文档点击鼠标右键查看属性)

Java代码
1.HSLFSlideShow hslf = HSLFSlideShow.create();  
2.DocumentSummaryInformation dsi= hslf.getDocumentSummaryInformation();     
3.SummaryInformation si= hslf.getSummaryInformation();     
4.   
5.dsi.setCompany("yourCompany");    
6.dsi.setCategory("ppt测试");     
7.si.setAuthor("yourName");     
8.si.setTitle("标题");    
9.   
10.SlideShow ppt = new SlideShow(hslf);  
11.savePPTFile(ppt);
分享到:
评论
1 楼 GB654 2013-10-29  
那么请问楼主怎么往PPT中添加备注呢???

相关推荐

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

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

    poi操作ppt完整示例程序

    现在,让我们深入到Java实现的POI操作PPT的DEMO中。这个DEMO可能包含了以下步骤: 1. **初始化**: 首先,你需要创建一个`XSLFSlideShow`对象,这可以是新创建的,也可以是从已有的PPT文件加载的。这通常通过`...

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

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

    poi操作ppt图表.zip

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

    利用java poi操作ppt

    在这个特定的话题中,我们将深入探讨如何利用Java POI来操作PPT(PowerPoint)文件。以下是关于这个主题的详细讲解: 1. **创建新的PPT文档** 使用Java POI创建一个新的PPT文档首先需要引入相关的库,例如`poi-...

    使用poi操作PPT

    本资源《初始版本》是精简版,《PPT模板生成PPT》是实际项目中的例子,具体就是使用poi去操作PPT,替换PPT中特定的文本,用${key}这种标识在PPT中存放,java代码使用value去替换PPT中的${key},从而生成新的PPT供大家...

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

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

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

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

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

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

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

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

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

    POI操作大文件时可能会消耗大量内存,因此,对于大量数据的处理,应考虑使用低内存模式或者SXSSF(Streaming Usermodel API)来减少内存占用。 10. **错误处理**: 在实际编程中,需要处理可能的异常,如文件不...

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

    在"java用poi转ppt为图片"的场景下,我们可以利用POI的API将PPT文件的每一页转换为图像。这样做的好处在于,可以方便地在网络上传输或嵌入到其他不支持PPT格式的应用中。转换过程通常涉及打开PPT文件,遍历每一页...

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

    标题中的“Poi-ppt.zip_885POICOM_PPT模板_javaPPT工具项目_poi ppt”表明这是一个基于Java的项目,利用Apache POI库来操作PPT模板,生成定制化的PPT文件。描述进一步确认了这一点,说明这个项目能够接受模板,并在...

    poi-ppt.zip_POI_Poi-ppt_poi ImageExtractor_poi源码包

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Word(.doc, .docx)、Excel(.xls, .xlsx)和PowerPoint(.ppt, .pptx)。这个“poi-ppt.zip”文件包含的是POI库中处理PowerPoint文件的...

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

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

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

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

    Android_POI_TO_PPT

    "Android_POI_TO_PPT"这个项目正是关注于如何在Android平台上利用Apache POI库将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将...

    java使用poi所需要的各种各样的jar

    在标题和描述中提到的“java使用poi操作ppt所需要的各种jar”,指的是为了使用POI处理PowerPoint文件,需要引入一系列的依赖库。这些依赖库不仅包括处理PowerPoint的基本库,还可能包括处理Excel和其他相关功能的库...

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

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

Global site tag (gtag.js) - Google Analytics