JAVA使用POI读取PPT文件和POI读取EXCEL WORD示例
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}catch(IOException e){ e.printStackTrace();
} } }
public class PPT {
//直接抽取幻灯片的全部内容 public static String readDoc1(InputStream is) throws IOException{
PowerPointExtractor extractor=new PowerPointExtractor(is); return extractor.getText(); }
import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.extractor.WordExtractor; import org.apache.poi.hwpf.usermodel.CharacterRun; import org.apache.poi.hwpf.usermodel.Paragraph; import org.apache.poi.hwpf.usermodel.Range; import org.apache.poi.hwpf.usermodel.Section;
Section s=r.getSection(x); for(int y=0;y<s.numParagraphs();y++){
Paragraph p=s.getParagraph(y); for(int z=0;z<p.numCharacterRuns();z++){
CharacterRun run=p.getCharacterRun(z); String text=run.text(); System.out.print(text); } } } }
import org.apache.poi.hslf.HSLFSlideShow; import org.apache.poi.hslf.extractor.PowerPointExtractor; import org.apache.poi.hslf.model.Slide; import org.apache.poi.hslf.model.TextRun; import org.apache.poi.hslf.usermodel.SlideShow;
使用 POI 抽取 Word 简单示例:
要引入 poi-3.7.jat 和 poi-scratchpad-3.7.ajr 这两个包。
复制代码 代码如下:
package msoffice;
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream;
public static void main(String[] args) { File file = new File("/home/orisun/1.doc"); try { FileInputStream fin = new FileInputStream(file); String cont = readDoc1(fin); System.out.println(cont); fin.close(); fin = new FileInputStream(file); readDoc2(fin); fin.close(); } catch (IOException e) { e.printStackTrace(); }
java 使用 poi 读取 ppt 文件和 poi 读取 excel、word 示例
Apache 的 POI 项目可以用来处理 MS Office 文档,codeplex 上还有一个它的.net 版本。POI 项目可 创建和维护操作各种基于 OOXML 和 OLE2 文件格式的 Java API。大多数 MS Office 都是 OLE2 格 式的。POI 通 HSMF 子项目来支持 Outlook,通过 HDGF 子项目来支持 Visio,通过 HPBF 子项目 来支持 Publisher。
} }பைடு நூலகம்
POI 抽取 PPT 示例:
复制代码 代码如下:
package msoffice;
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream;
public class Word {
// 直接抽取全部内容 public static String readDoc1(InputStream is) throws IOException {
WordExtractor extractor = new WordExtractor(is); return extractor.getText(); }
import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.extractor.ExcelExtractor; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.Row;
//读取一张幻灯片的标题
String title=slides[i].getTitle(); System.out.println("标题:"+title); //读取一张幻灯片的内容(包括标题) TextRun[] runs=slides[i].getTextRuns(); for(int j=0;j<runs.length;j++){
System.out.println(runs[j].getText()); } } }
public static void main(String[] args){ File file = new File("/home/orisun/2.ppt"); try{ FileInputStream fin=new FileInputStream(file); String cont=readDoc1(fin); System.out.println(cont); fin.close(); fin=new FileInputStream(file); readDoc2(fin); fin.close(); }catch(IOException e){ e.printStackTrace(); }
//分章节 Section、段落 Paragraph、字符串 CharacterRun 抽取 public static void readDoc2(InputStream is) throws IOException {
HWPFDocument doc=new HWPFDocument(is); Range r=doc.getRange(); for(int x=0;x<r.numSections();x++){
double molecule=0.0; double denominator=0.0; //按行遍历 sheet Iterator<Row> riter=sheet.rowIterator(); while(riter.hasNext()){
HSSFRow row=(HSSFRow)riter.next(); HSSFCell cell1=row.getCell(4); HSSFCell cell2=row.getCell(4); if(cell1.getCellType()!=HSSFCell.CELL_TYPE_NUMERIC){
System.err.println("数字类型错误!"); System.exit(-2); } if(cell2.getCellType()!=HSSFCell.CELL_TYPE_NUMERIC){ System.err.println("数字类型错误!"); System.exit(-2); } denominator+=Double.parseDouble(cell2.toString().trim()); molecule+=Double.parseDouble(cell2.toString().trim())*Float.parseFloat(cell1.toString().trim()); } return molecule/denominator; }
} }
Excel 文件由多个 Workbook 组成,一个 Workbook 由多个 Sheet 组成。
POI 抽取 Excel 简单示例:
复制代码 代码如下:
package msoffice;
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator;
//读取时细化到 Sheet、行甚至单元格 public static double getAvg(InputStream is)throws IOException{
HSSFWorkbook wb=new HSSFWorkbook(new POIFSFileSystem(is)); //获取第一张 sheet HSSFSheet sheet=wb.getSheetAt(0);
public static void main(String[] args){ File file = new File("/home/orisun/3.xls"); try{ FileInputStream fin=new FileInputStream(file); String cont=readDoc1(fin); System.out.println(cont); fin.close(); fin=new FileInputStream(file); System.out.println("加权平均分"+getAvg(fin)); fin.close();
public class Excel {
//直接读取 Excel 的全部内容 public static String readDoc1(InputStream is)throws IOException{
HSSFWorkbook wb=new HSSFWorkbook(new POIFSFileSystem(is)); ExcelExtractor extractor=new ExcelExtractor(wb); extractor.setFormulasNotResults(false); extractor.setIncludeSheetNames(true); return extractor.getText(); }
//一张幻灯片一张幻灯片地读取 public static void readDoc2(InputStream is) throws IOException{
SlideShow ss=new SlideShow(new HSLFSlideShow(is)); Slide[] slides=ss.getSlides(); for(int i=0;i<slides.length;i++){