本文目录一览:
- 1、poi导出ppt怎么设置ppt母版
- 2、使用POI将ppt幻灯片导出为图片,但是其中的中文是乱码,如何解决
- 3、poi怎么在ppt中生成图表(如:柱图、曲线图之类)
- 4、apache poi获取ppt全部内容和细化读取的区别
poi导出ppt怎么设置ppt母版
PPT模板需要再模板视图中设置,步骤如下:
我用的office PowerPoint演示 ,不过支持免费的WPS。
分为直接套用模板和自定义模板两种,
1.绍模板套用
模板套用很简单,首先要去找一个适合演讲展示内容主题的模板,
可以直接安装一个“文档美化大师”一键美化文档,使用方法很简单,这里就不多介绍,安装打开已经做好的ppt一键美化即可,也可以进去挑选喜欢的ppt模板。
2.模板更改和自定义:视图-幻灯片母版
这里有12个板式,分别对应的是板式中的11个板式+1个通用板式(模板中的第一个)
然后在对应板式里编辑相应的模板,字体样式、背景颜色
如果只是想要给幻灯片加个背景,那么直接在最顶上那个通用板式底部加一个背景就行
下图中,左侧的12个板式对应的是幻灯片普通视图编辑框中的11个板式+一个通用视图
下图是幻灯片板式入口,模板视图中编辑好,此处可以直接套用
编辑完成关闭,然后到普通视图中去添加想要展示的内容即可
注意的是,直接在非模板视图也是可以添加的,就是背景图片不是锁定样式
使用POI将ppt幻灯片导出为图片,但是其中的中文是乱码,如何解决
应该是和字体定义有关系的。POI中默认没有中文字体。要自己加,而且对于斜体、粗体的控制,中文字体和英文字体的处理是不同的,而POI只支持英文的处理方式。几年前曾经作为一个BUG提交给POI,但POI答复不认为是BUG。然后我提交new Feature,建议按照Java Swing中对中文字体的处理方法来处理,POI项目组答复和体系结构有关系,不准备追加,不知道现在有没有进展。
印象中POI有一个字体文件的定义,要参看他的文档中,关于Locale 和 font的说明。
poi怎么在ppt中生成图表(如:柱图、曲线图之类)
告诉你个小秘密:别指望单独拿poi生成图表了,生成不了。要么就用poi整合excel下的vba生成图表,要不就就用报表软件比如jfreechart预先生成图表图片,然后把图表图片引入excel中。 我常用第二种方法。
apache poi获取ppt全部内容和细化读取的区别
有时候我们需要从Excel文件中读取数据,或者我们为了商务或者财政的目的生成Excel格式的报表.Java没有对操作Excel文件提供内在的支持,所以我们需要寻找开源的APIs.当我开始寻找操作Excel的APIs时候,大部分人建议使用JExcel或者Apache POI.
在深入研究后,我发现由于以下主要原因Apache POI是正确的选择.还有些关于高级特性的原因,但是我们不深入太多细节.
1)Apache基金的支持.
2)JExcel不支持xlsx格式而POI既支持xls格式又支持xlsx格式.
3)Apache POI是基于流的处理,因此更适合大文件和要求更少的内存.
Apache POI对处理Excel文件提供了强大的支持,并且能处理xls和xlsx格式的电子表格.
关于Apache POI一些重要的地方:
1)Apache POI包含适合Excel97-2007(.xls文件)的HSSF实现.
2)Apache POI XSSF实现用来处理Excel2007文件(.xlsx).
3)Apache POI HSSF和XSSF提供了读/写/修改Excel表格的机制.
4)Apache POI提供了XSSF的一个扩展SXSSF用来处理非常大的Excel工作单元.SXSSF API需要更少的内存,因此当处理非常大的电子表格同时堆内存又有限时,很合适使用.
5)有两种模式可供选择--事件模式和用户模式.事件模式要求更少的内存,因为用tokens来读取Excel并处理.用户模式更加面向对象并且容易使用,因此在我们的示例中使用用户 模式.
6)Apache POI为额外的Excel特性提供了强大支持,例如处理公式,创建单元格样式--颜色,边框,字体,头部,脚部,数据验证,图像,超链接等.
Apache POI的Maven依赖
[java] view plaincopy
span style="font-size:14px;"dependency
groupIdorg.apache.poi/groupId
artifactIdpoi/artifactId
version3.10-FINAL/version
/dependency
dependency
groupIdorg.apache.poi/groupId
artifactIdpoi-ooxml/artifactId
version3.10-FINAL/version
/dependency/span
Apache POI的当前版本是3.10-FINAL.如果你使用单独的java应用,添加jars根据下面的图片.
读取Excel文件
假设我们有一个叫Sample.xlsx的Excel文件,里面有两个sheet并且下面图片中的数据.我们想要读取这个Excel文件并且创建Countries list.sheet1有些额外的数据,当我们解析时会忽略它.
我们的国家(Country)java bean如下:
Country.java
[java] view plaincopy
package com.journaldev.excel.read;
public class Country {
private String name;
private String shortCode;
public Country(String n, String c){
this.name=n;
this.shortCode=c;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getShortCode() {
return shortCode;
}
public void setShortCode(String shortCode) {
this.shortCode = shortCode;
}
@Override
public String toString(){
return name + "::" + shortCode;
}
}
读取Excel文件并创建Countries list代码如下:
ReadExcelFileToList.java
[java] view plaincopy
package com.journaldev.excel.read;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ReadExcelFileToList {
public static ListCountry readExcelData(String fileName) {
ListCountry countriesList = new ArrayListCountry();
try {
//Create the input stream from the xlsx/xls file
FileInputStream fis = new FileInputStream(fileName);
//Create Workbook instance for xlsx/xls file input stream
Workbook workbook = null;
if(fileName.toLowerCase().endsWith("xlsx")){
workbook = new XSSFWorkbook(fis);
}else if(fileName.toLowerCase().endsWith("xls")){
workbook = new HSSFWorkbook(fis);
}
//Get the number of sheets in the xlsx file
int numberOfSheets = workbook.getNumberOfSheets();
//loop through each of the sheets
for(int i=0; i numberOfSheets; i++){
//Get the nth sheet from the workbook
Sheet sheet = workbook.getSheetAt(i);
//every sheet has rows, iterate over them
IteratorRow rowIterator = sheet.iterator();
while (rowIterator.hasNext())
{
String name = "";
String shortCode = "";
//Get the row object
Row row = rowIterator.next();
//Every row has columns, get the column iterator and iterate over them
IteratorCell cellIterator = row.cellIterator();
while (cellIterator.hasNext())
{
//Get the Cell object
Cell cell = cellIterator.next();
//check the cell type and process accordingly
switch(cell.getCellType()){
case Cell.CELL_TYPE_STRING:
if(shortCode.equalsIgnoreCase("")){
shortCode = cell.getStringCellValue().trim();
}else if(name.equalsIgnoreCase("")){
//2nd column
name = cell.getStringCellValue().trim();
}else{
//random data, leave it
System.out.println("Random data::"+cell.getStringCellValue());
}
break;
case Cell.CELL_TYPE_NUMERIC:
System.out.println("Random data::"+cell.getNumericCellValue());
}
} //end of cell iterator
Country c = new Country(name, shortCode);
countriesList.add(c);
} //end of rows iterator
} //end of sheets for loop
//close file input stream
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
return countriesList;
}
public static void main(String args[]){
ListCountry list = readExcelData("Sample.xlsx");
System.out.println("Country List/n"+list);
}
}
这个程序很容易明白,主要步骤如下:
1)根据文件类型(.xls与.xlsx)创建Workbook实例,xlsx用XSSFWorkbook,xls用HSSFWorkbook.我们可以基于文件名字使用工 厂模式创建一个包装类来创建Workbook实例.
2)使用Workbook getNumberOfSheets()来获取sheet的数量,然后循环解析每一个sheet.使用getSheetAt(int i)方法获取 Sheet实例.
3)获取Row和Cell迭代器来获取每一个Cell对象.Apache POI在这里使用了迭代器模式.
4)使用switch-case根据Cell的类型来处理它.