工具类_JavaPOI_Office文件内容读取
文件内容读取工具类,亲测可用
maven依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.16</version>
</dependency> <dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.16</version>
</dependency> <dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>3.16</version>
</dependency> <dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.6.0</version>
</dependency> <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
工具类:
import org.apache.commons.io.FileUtils;
import org.apache.pdfbox.io.RandomAccessBuffer;
import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.poi.POIXMLDocument;
import org.apache.poi.POIXMLTextExtractor;
import org.apache.poi.hslf.extractor.PowerPointExtractor;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
import org.apache.poi.openxml4j.opc.OPCPackage;
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.xslf.extractor.XSLFPowerPointExtractor;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.xmlbeans.XmlException; import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream; /**
* @author wangshuaijun
* @description
* 读取文件工具类:支持以下文件内容读取
* 1. word(.doc),word(.docx)
* 2. excel(.xls),excel(xlsx)
* 3. pdf
* 4. txt
* 5. ppt(.ppt),pptx(,pptx)
* @date 2019年4月19日10:52:45
*
*/
public class ReadFileUtils { /**
* 根据文件类型返回文件内容
* @param filepath
* @return
* @throws IOException
*/
public static String getContentByPath(String filepath) throws IOException{
String []fileTypeArr=filepath.split( "\\." );
String fileType=fileTypeArr[fileTypeArr.length-1];
if("doc".equals( fileType ) || "docx".equals( fileType )){
return readWord( filepath,fileType );
}else if("xlsx".equals( fileType ) || "xls".equals( fileType )){
return readExcel( fileType,filepath );
}else if("txt".equals( fileType )){
return readTxt(filepath);
}else if("pdf".equals( fileType )){
return readPdf(filepath);
}else if("ppt".equals( fileType ) || "pptx".equals( fileType )){
return readPPT(fileType,filepath);
}else{
System.out.println("不支持的文件类型!");
}
return "";
} /**
* 读取PDF中的内容
* @param filePath
* @return
*/
public static String readPdf(String filePath){
FileInputStream fileInputStream=null;
PDDocument pdDocument=null;
String content="";
try {
//创建输入流对象
fileInputStream = new FileInputStream(filePath);
//创建解析器对象
PDFParser pdfParser = new PDFParser(new RandomAccessBuffer(fileInputStream));
pdfParser.parse();
//pdf文档
pdDocument = pdfParser.getPDDocument();
//pdf文本操作对象,使用该对象可以获取所读取pdf的一些信息
PDFTextStripper pdfTextStripper = new PDFTextStripper();
content = pdfTextStripper.getText(pdDocument);
}catch(IOException e){
e.printStackTrace();
}finally{
try {
//PDDocument对象时使用完后必须要关闭
if(null!=pdDocument){
pdDocument.close();
}
if(null!=fileInputStream){
fileInputStream.close();
}
}catch (IOException e){
e.printStackTrace();
}
}
return content;
} /**
* 读取Excel中的内容
* @param filePath
* @return
* @throws IOException
*/
private static String readTxt(String filePath) throws IOException{
File f = new File(filePath);
return FileUtils.readFileToString( f,"GBK" );
} /**
* 读取Excel中的内容
* @param filePath
* @return
*/
private static String readExcel(String fileType,String filePath){ try {
File excel = new File(filePath);
if (excel.isFile() && excel.exists()) { //判断文件是否存在
Workbook wb;
//根据文件后缀(xls/xlsx)进行判断
if ( "xls".equals(fileType)){
FileInputStream fis = new FileInputStream(excel); //文件流对象
wb = new HSSFWorkbook(fis);
}else if ("xlsx".equals(fileType)){
wb = new XSSFWorkbook(excel);
}else {
System.out.println("文件类型错误!");
return "";
}
//开始解析,获取页签数
StringBuffer sb=new StringBuffer("");
for(int i=0;i<wb.getNumberOfSheets();i++){
Sheet sheet = wb.getSheetAt(i); //读取sheet
sb.append( sheet.getSheetName() +"_");
int firstRowIndex = sheet.getFirstRowNum()+1; //第一行是列名,所以不读
int lastRowIndex = sheet.getLastRowNum();
for(int rIndex = firstRowIndex; rIndex <= lastRowIndex; rIndex++) { //遍历行
Row row = sheet.getRow(rIndex);
if (row != null) {
int firstCellIndex = row.getFirstCellNum();
int lastCellIndex = row.getLastCellNum();
for (int cIndex = firstCellIndex; cIndex < lastCellIndex; cIndex++) { //遍历列
Cell cell = row.getCell(cIndex);
if (cell != null) {
sb.append( cell.toString());
}
}
}
}
}
return sb.toString();
} else {
System.out.println("找不到指定的文件");
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
} /**
* 读取word中的内容
* @param path
* @param fileType
* @return
*/
public static String readWord(String path,String fileType) {
String buffer = "";
try {
if ("doc".equals( fileType )) {
InputStream is = new FileInputStream(new File(path));
WordExtractor ex = new WordExtractor(is);
buffer = ex.getText();
ex.close();
} else if ("docx".equals( fileType )) {
OPCPackage opcPackage = POIXMLDocument.openPackage(path);
POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);
buffer = extractor.getText();
extractor.close(); } else {
System.out.println("此文件不是word文件!");
} } catch (Exception e) {
e.printStackTrace();
} return buffer;
} private static String readPPT(String fileType,String filePath) {
try {
if("ppt".equals( fileType )){
PowerPointExtractor extractor=new PowerPointExtractor(new FileInputStream( new File( filePath )));
return extractor.getText();
} else if("pptx".equals( fileType )){
return new XSLFPowerPointExtractor(POIXMLDocument.openPackage(filePath)).getText();
}
}catch (IOException e){
e.fillInStackTrace();
}catch(XmlException e){
e.getMessage();
}catch(OpenXML4JException e){
e.getMessage();
} return "";
}
工具类_JavaPOI_Office文件内容读取的更多相关文章
- excel to datatable (c#用NPOI将excel文件内容读取到datatable数据表中)
将excel文件内容读取到datatable数据表中,支持97-2003和2007两种版本的excel 1.第一种是根据excel文件路径读取excel并返回datatable /// <sum ...
- Properties类对于文件的读取和写入
Properties类表示一个持久的属性集.Properties可保存在流中或从流中加载.Properties对象只能加载以 .Properties 为后缀的文件(文件我创建在src下). 开始时文件 ...
- 【转载】ASP.NET工具类:文件夹目录Directory操作工具类
在ASP.NET开发网站的过程中,有时候会涉及到文件夹相关操作,如判断文件夹目录是否存在.删除文件夹目录.创建文件.删除文件.复制文件夹等等.这一批有关文件目录的操作可以通过Directory类.Fi ...
- Java将字符串写入文件与将文件内容读取到字符串
原文:http://blog.csdn.net/liuweiyuxiang/article/details/69487326 将字符串写入文件 方法一 public void WriteStringT ...
- ios本地文件内容读取,.json .plist 文件读写
ios本地文件内容读取,.json .plist 文件读写 本地文件.json .plist文件是较为常用的存储本地数据的文件,对这些文件的操作也是一种常用的基础. 本文同时提供初始化变量的比较标准的 ...
- 文件压缩、解压工具类。文件压缩格式为zip
package com.JUtils.file; import java.io.BufferedOutputStream; import java.io.File; import java.io.Fi ...
- FastDFS 工具类实现文件上传_02
一.jar 包 jar包下载:https://pan.baidu.com/s/1nwkAHU5 密码:tlv6 或者 下载工程,安装到 maven 本地仓库 工程下载:https://pan.baid ...
- ca75a_c++_标准IO库-利用流对象把文件内容读取到向量-操作文件
/*ca75a_c++_标准IO库习题练习习题8.3,8.4,8.6习题8.9.8.10 ifstream inFile(fileName.c_str());1>d:\users\txwtech ...
- robotframework 测试工具添加PDF文件内容匹配插件
robotframework 这个需要了解的请度娘.本文实现的是一个小功能.大体分为如下几个步骤 1)给定一个pdf文件. 2)读取pdf文件内容,并解析为文本内容. 3)通过给定的内容,比对pdf ...
随机推荐
- OSI协议与TCP\IP协议之间的关系
OSI协议 TCP\IP协议 五层协议(学习参考) 应用层 应用层 应用层 表示层 会话层 运输层 运输层 运输层 网络层 网络层 网络层 数据链路层 网络接口层 数据链路层 物理层 物理层 基于五层 ...
- 'vue' 不是内部或外部命令
运用cnpm淘宝镜像安装vue-cli,然后输入vue,显示“'vue' 不是内部或外部命令”,然后百度查找方法,解决办法如下: 虽然电脑是64位的电脑,然后node我也下载安装的是64位,然后,我重 ...
- HANA数据库无法停止
Symptom: 使用命令HDB stop多次,每次报错为timeout ----------------------- sdpadm@PRDDB01:/usr/sap/SDP/HDB66/prder ...
- cookie和session以及iOS cookie的查取
Cookie的工作原理 http是无状态的,这是什么意思呢?就是说,在没有cookie之前,你第一次访问这个页面和第二次访问这个页面, 服务器是不知道的,不知道前一次是你.那么问题来了,我怎么登录,登 ...
- Java集合框架介绍。Java Collection Frameworks = JCF
Java集合框架 = Java Collection Frameworks = JCF . 为了方便理解,我画了一张思维脑图.
- django_rest framework 接口开发(一)
1 restful 规范(建议) 基于FbV def order(request): if request.method=="GET": return HttpResponse(' ...
- Flask之Local、LocalStack和LocalProxy
在我们使用Flask以及Werkzeug框架的过程中,经常会遇到如下三个概念:Local.LocalStack和LocalProxy.尤其在学习Flask的Request Context和App Co ...
- git 添加码云远程仓库和上传到码云的命令
添加远程仓库 git remote add Zk 仓库地址.git 查看远程仓库 git remote -v 上传远程仓库 git push Zk master 删除远程仓库Zkgit remot ...
- Linux命令——killall 、kill 、pkill、xkill
参考:killall .kill .pkill 命令详解 Using kill, killall, and pkill 4 Ways to Kill a Process – kill, killall ...
- Linux:入门基础
一.操作Linux必知必会基础知识 二.在Linux命令下查看命令帮助信息 三.Linux挂机重启注销命令 四.Linux显示系统IP地址 一.操作Linux必知必会基础知识 1.Linux命令行组成 ...