java读取各种类型文件
用到的几个包 bcmail-jdk14-132.jar/bcprov-jdk14-132.jar/checkstyle-all-4.2.jar/FontBox-0.1.0-dev.jar/lucene-core-2.0.0.jar/PDFBox-0.7.3.jar/poi-3.0-alpha3-20061212.jar/poi-contrib-3.0-alpha3-20061212.jar/poi-scratchpad-3.0-alpha3-20061212.jar import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import org.apache.poi.hslf.HSLFSlideShow;
import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.model.TextRun;
import org.apache.poi.hslf.usermodel.SlideShow;
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.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Paragraph;
import org.apache.poi.hwpf.usermodel.Range;
import org.pdfbox.pdfparser.PDFParser;
import org.pdfbox.util.PDFTextStripper; public class Test { /**
* @param args
*/
public static void p(Object obj) {
System.out.println(obj);
} public static void main(String[] args) {
try {
p(readPpt("src/1.dps"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
//读取ppt
public static String readPpt(String path) throws Exception { StringBuffer content = new StringBuffer("");
try {
SlideShow ss = new SlideShow(new HSLFSlideShow(path));// path为文件的全路径名称,建立SlideShow
Slide[] slides = ss.getSlides();// 获得每一张幻灯片
for (int i = 0; i < slides.length; i++) {
TextRun[] t = slides[i].getTextRuns();// 为了取得幻灯片的文字内容,建立TextRun
for (int j = 0; j < t.length; j++) {
content.append(t[j].getText());// 这里会将文字内容加到content中去
}
content.append(slides[i].getTitle());
}
} catch (Exception ex) {
System.out.println(ex.toString());
}
return content.toString().trim(); }
// 读取xls
public static String readXls(String path) throws Exception {
StringBuffer content = new StringBuffer("");// 文档内容
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(path));
int sheetCount = workbook.getNumberOfSheets();// excel几张表
for (int i = 0; i < sheetCount; i++) {// 遍历excel表
HSSFSheet sheet = workbook.getSheetAt(i);// 对excel的第一个表引用
int rowCount = sheet.getLastRowNum();// 取得最后一行的下标
for (int j = 0; j < rowCount; j++) {// 循环每一行
HSSFRow row = sheet.getRow(j);// 引用行
if (row == null) {
continue;
} else {
short cellNum = row.getLastCellNum();
for (short m = 0; m < cellNum; m++) {
HSSFCell cell = row.getCell(m);// 引用行中的一个单元格
if (cell != null) {
int cellType = cell.getCellType();
// CELL_TYPE_NUMERIC 0 数字
// CELL_TYPE_STRING 1 字符串
// CELL_TYPE_FORMULA 2 公式
// CELL_TYPE_BLANK 3 空格
// CELL_TYPE_BOOLEAN 4 布尔值
// CELL_TYPE_ERROR 5 错误
switch (cellType) {
// 单元格类型为数字
case HSSFCell.CELL_TYPE_NUMERIC:
// 取数字单元格的值
double d = cell.getNumericCellValue();
content.append(String.valueOf(d) + " ");
break;
// 单元格类型为字符串
case HSSFCell.CELL_TYPE_STRING:
String str = cell.getStringCellValue().trim();
if (!str.equals("")) {
content.append(str + " ");
}
break;
// 单元格类型为公式
case HSSFCell.CELL_TYPE_FORMULA:
// 不读取公式
// String formula = cell.getCellFormula();
// content = content + formula+" ";
break;
// 单元格类型为空白
case HSSFCell.CELL_TYPE_BLANK:
break;
// 单元格类型为布尔值
case HSSFCell.CELL_TYPE_BOOLEAN:
// boolean bool = cell.getBooleanCellValue();
// content = content + bool+" ";
break;
// 单元格类型为错误
case HSSFCell.CELL_TYPE_ERROR:
// byte errorCode = cell.getErrorCellValue();
// content = content + errorCode+" ";
break;
default:
break;
}
} else {
// content = content + "..." +" ";//没有数据的单元格使用...填充
}
}
}
content.append("\r");
}
}
return content.toString().trim();
} // 读取pdf
public static String readPdf(String path) throws Exception {
StringBuffer content = new StringBuffer("");// 文档内容
FileInputStream fis = new FileInputStream(path);
PDFParser p = new PDFParser(fis);
p.parse();
PDFTextStripper ts = new PDFTextStripper();
content.append(ts.getText(p.getPDDocument()));
fis.close();
return content.toString().trim();
} // 读取word,只能读取文本内容 图片不行
public static String readWord(String path) throws Exception { StringBuffer content = new StringBuffer("");// 文档内容
HWPFDocument doc = new HWPFDocument(new FileInputStream(path));
Range range = doc.getRange();
int paragraphCount = range.numParagraphs();// 段落
for (int i = 0; i < paragraphCount; i++) {// 遍历段落读取数据
Paragraph pp = range.getParagraph(i);
content.append(pp.text());
}
return content.toString().trim();
} // 读取text
public static String readTxt(String path) {
StringBuffer content = new StringBuffer("");// 文档内容
try {
FileReader reader = new FileReader(path);
BufferedReader br = new BufferedReader(reader);
String s1 = null; while ((s1 = br.readLine()) != null) {
content.append(s1 + "\r");
}
br.close();
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
return content.toString().trim();
} }
来自于:https://www.cnblogs.com/candl/p/3592649.html
读取xls表格:https://juejin.im/entry/5a5f03e76fb9a01cb42c643e
读取excel:http://www.voidcn.com/article/p-akhurrpc-bbh.html
java读取各种类型文件的更多相关文章
- java读取各类型的文件
java读取各类型的文件 用到的几个包 bcmail-jdk14-132.jar/bcprov-jdk14-132.jar/checkstyle-all-4.2.jar/FontBox-0.1.0-d ...
- java读取 500M 以上文件,java读取大文件
java 读取txt,java读取大文件 设置缓存大小BUFFER_SIZE ,Config.tempdatafile是文件地址 来源博客http://yijianfengvip.blog.163.c ...
- ios 读取各种类型文件
1.如何读取UTF-8编码的文本文件? 2.如何读取GB2312(中文)的文本文件? 3.如何读取其它编码文件? 首先解决第一个问题, 1.如何读取UTF-8编码的文本文件? NSString *fi ...
- Java读取UTF-8格式文件第一行出现乱码——问号“?”及解决 And Java读带有BOM的UTF-8文件乱码原因及解决方法
測试样例: Java读取UTF-8的txt文件第一行出现乱码"?"及解决 test.txt文件内容: 1 00:00:06,000 --> 00:00:06,010 < ...
- JAVA读取本地html文件里的html文本
/** * 读取本地html文件里的html代码 * @param file File file=new File("文件的绝对路径") * @return */ public s ...
- Java读取批量Excel文件
1.首先基础知识: 原文链接:https://blog.csdn.net/baidu_39298625/article/details/105842725 一 :简介 开发中经常会设计到excel的处 ...
- Java读取修改Properties文件
properties文件是我们经常需要操作一种文件,它使用一种键值对的形式来保存属性集. 无论在学习上还是工作上经常需要读取,修改,删除properties文件里面的属性. 本文通过操作一个prope ...
- java读取本地txt文件并插入数据库
package com.cniia.ny.web.control.configManage; import java.io.BufferedReader; import java.io.File; i ...
- java - 读取,导出 excel文件数据
首先需下载poi java包,添加至构建路径, 写处理方法: import java.io.FileInputStream;import java.io.FileOutputStream;import ...
随机推荐
- bzoj 3704 昊昊的机油之GRST - 贪心
题目传送门 传送门 题目大意 给定一个数组$a$和数组$b$,每次操作可以选择$a$的一个子区间将其中的数在模4意义下加1,问把$a$变成$b$的最少操作次数. 首先求$b - a$,再差分,令这个数 ...
- Facebook token更新
How to refresh Facebook access token python代码: 可以用vs code来运行,依赖python2.*,如果使用python3.*可能会出现部分包不兼容 sh ...
- P2822 组合数问题
传送门 思路: 利用公式: C( n,r ) = C( n-1,r ) + C( n-1,r-1 ) 由此可以将计算 C( n,r ) 的过程化为加法来做. 可以看出,C( n,r ) 其实就是求杨辉 ...
- MySQL存储过程 CASE语句
MySQL存储过程 CASE语句 除了IF语句,MySQL提供了一个替代的条件语句CASE. MySQL CASE语句使代码更加可读和高效. CASE语句有两种形式:简单的搜索CASE语句. 简单C ...
- linux下查看进程id时用到的命令
一.查看端口占用的进程 . lsof -i:端口号, 查看某一端口的占用情况 [root@localhost bin]# lsof -i: COMMAND PID USER FD TYPE DEVIC ...
- jquery表单提交获取数据(带toast dialog)
最近写了一个召集令,传统表单提交注册.写写遇到的费时间的点与解决办法 git项目地址:form-demo(针对于手机版,懒人可以直接使用,有排版和样式) demo使用Jquery,toast使用jqu ...
- fetch请求get方式以及post提交参数为formdata类型的数据
1.请求方式post,请求函数参数 _requestData(callback,_cityDt){ const switchIp = "http://192.168.43.103/api/p ...
- sql判断日期是否为当前季度
判断日期时候为当年: SELECT DateDiff(yy, '2018-01-02', GetDate()) 返回结果0为当年. 获取当前季度: SELECT DATEPART(QUARTER,GE ...
- Activiti之流程通过、驳回、会签、转办、中止、挂起等核心操作封装(Activiti5.9)
http://blog.csdn.net/rosten/article/details/38300267 package com.famousPro.process.service.impl; imp ...
- 【js】【图片显示】js控制html页面显示图片方式
js控制html页面显示图片方式,只需要引入“jquery-1.11.2.min.js” js: /* 引用 <script src="jquery-1.11.2.min.js&quo ...