java读取各类型的文件
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();
}
}
java读取各类型的文件的更多相关文章
- Java读取Level-1行情dbf文件极致优化(3)
最近架构一个项目,实现行情的接入和分发,需要达到极致的低时延特性,这对于证券系统是非常重要的.接入的行情源是可以配置,既可以是Level-1,也可以是Level-2或其他第三方的源.虽然Level-1 ...
- Java读取Level-1行情dbf文件极致优化(2)
最近架构一个项目,实现行情的接入和分发,需要达到极致的低时延特性,这对于证券系统是非常重要的.接入的行情源是可以配置,既可以是Level-1,也可以是Level-2或其他第三方的源.虽然Level-1 ...
- Java读取并下载网络文件
CreateTime--2017年8月21日10:11:07 Author:Marydon import java.io.ByteArrayOutputStream; import java.io ...
- Java显示指定类型的文件
文件作为存储数据的单元,会根据数据类型产生很多分类,也就是所谓的文件类型.在对数据文件进行操作时,常常需要根据不同的文件类型来作不同的处理.本实例实现的是读取文件夹指定类型的文件并显示到表格控件中.这 ...
- Java读取CSV和XML文件方法
游戏开发中,读取策划给的配置表是必不可少的,我在之前公司,策划给的是xml表来读取,现在公司策划给的是CSV表来读取,其实大同小异,也并不是什么难点,我就简单分享下Java如何读取XML文件和CSV文 ...
- java读取数据写入txt文件并将读取txt文件写入另外一个表
package com.xsw.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.F ...
- java读取UTF-8的txt文件发现开头的一个字符问题
今天遇到一个奇葩问题,在读取一个TXT文件时,出现开头多了一个问号(?).如下图: 莫名奇妙的多了一个.最后通过网上资料,知道在Java中,class文件采用utf8的编码方式,JVM运行时采用utf ...
- Java 读取jar内的文件的超简便方法
坑爹的java课程设计,偏要用jar来运行 读取.存储jar内文件的支持也好低 存储方法: 进入jar文件其实没有说的那么困难,jar文件本质是一个zip格式的压缩文件,只是把文件后缀名改了,要用Ja ...
- Java——读取和写入txt文件
package com.java.test.a; import java.io.BufferedReader; import java.io.BufferedWriter; import java.i ...
随机推荐
- 【CG】CG标准函数库——数学函数
- Flex 使用列表和表格
Flex 设计了不同的控件来实现列表和表格,不仅能够将数据显示在表格和列表中,还可以实现对数据进行操纵,修改等更加强大的功能. 与列表和表格相关的控件如下所示: 列表控件(List Control): ...
- vb 取得桌面路径
txtPath.Text = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
- SQL常用日期转换
0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM) 1 101 美国 mm/dd/yyyy ...
- Socket连接
socket中TCP的三次握手建立连接详解 我们知道tcp建立连接要进行“三次握手”,即交换三个分组.大致流程如下: 客户端向服务器发送一个SYN J 服务器向客户端响应一个SYN K,并对SYN J ...
- Date获取时间段
/** * */ package com.chinabase.common.util; /** * @author yuanji * @created on:Sep 19, 2008 */ impor ...
- gcov源码,供学习使用。
摘自http://www.opensource.apple.com/source/gcc/gcc-5484/gcc/gcov.c /* Gcov.c: prepend line execution c ...
- 3月2日 Linked List Cycle
今天星期天,准备好周一的PPT内容,再回来做题,以后考虑周末做一个APP或者微信帐号玩吧. 回到题目, Linked List Cycle,一个检查单项链表是否有环路的问题. 题目周五的时候就简单做过 ...
- C#去除List中集合的重复项(类型对象和单一类型)
去除重复类型对象BookInfo示例: bookList = bookList.Distinct(new DataRowComparer()).ToList(); //去除重复书籍 /// <s ...
- Vue.js学习 Item12 – 内部响应式原理探究
深入响应式原理 大部分的基础内容我们已经讲到了,现在讲点底层内容.Vue.js 最显著的一个功能是响应系统 —— 模型只是普通对象,修改它则更新视图.这让状态管理非常简单且直观,不过理解它的原理也很重 ...