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读取各类型的文件的更多相关文章

  1. Java读取Level-1行情dbf文件极致优化(3)

    最近架构一个项目,实现行情的接入和分发,需要达到极致的低时延特性,这对于证券系统是非常重要的.接入的行情源是可以配置,既可以是Level-1,也可以是Level-2或其他第三方的源.虽然Level-1 ...

  2. Java读取Level-1行情dbf文件极致优化(2)

    最近架构一个项目,实现行情的接入和分发,需要达到极致的低时延特性,这对于证券系统是非常重要的.接入的行情源是可以配置,既可以是Level-1,也可以是Level-2或其他第三方的源.虽然Level-1 ...

  3. Java读取并下载网络文件

      CreateTime--2017年8月21日10:11:07 Author:Marydon import java.io.ByteArrayOutputStream; import java.io ...

  4. Java显示指定类型的文件

    文件作为存储数据的单元,会根据数据类型产生很多分类,也就是所谓的文件类型.在对数据文件进行操作时,常常需要根据不同的文件类型来作不同的处理.本实例实现的是读取文件夹指定类型的文件并显示到表格控件中.这 ...

  5. Java读取CSV和XML文件方法

    游戏开发中,读取策划给的配置表是必不可少的,我在之前公司,策划给的是xml表来读取,现在公司策划给的是CSV表来读取,其实大同小异,也并不是什么难点,我就简单分享下Java如何读取XML文件和CSV文 ...

  6. java读取数据写入txt文件并将读取txt文件写入另外一个表

    package com.xsw.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.F ...

  7. java读取UTF-8的txt文件发现开头的一个字符问题

    今天遇到一个奇葩问题,在读取一个TXT文件时,出现开头多了一个问号(?).如下图: 莫名奇妙的多了一个.最后通过网上资料,知道在Java中,class文件采用utf8的编码方式,JVM运行时采用utf ...

  8. Java 读取jar内的文件的超简便方法

    坑爹的java课程设计,偏要用jar来运行 读取.存储jar内文件的支持也好低 存储方法: 进入jar文件其实没有说的那么困难,jar文件本质是一个zip格式的压缩文件,只是把文件后缀名改了,要用Ja ...

  9. Java——读取和写入txt文件

    package com.java.test.a; import java.io.BufferedReader; import java.io.BufferedWriter; import java.i ...

随机推荐

  1. windows7环境下svn服务器的配置及使用

    一.安装 1 软件准备: Setup-Subversion-1.7.8 TortoiseSVN-1.7.11.23600-win32-svn-1.7.8 2 安装: 安装个人的需要设定好安装路径. 3 ...

  2. 关于conversation generation的论文笔记

    对话模型此前的研究大致有三个方向:基于规则.基于信息检索.基于机器翻译.基于规则的对话系统,顾名思义,依赖于人们周密设计的规则,对话内容限制在特定领域下,实际应用如智能客服,智能场馆预定系统.基于信息 ...

  3. php头函数和浏览器缓存

    可以通过php头函数改变返回给浏览器的头信息 例: 代码中添加头: header("Cache-Control: max-age=31536000"); header(" ...

  4. ubuntu server unable to resolve host

    cat /etc/resolv.conf (查看resolv.conf中的内容: nameserver 是动态添加的……) #通过添加/etc/resolvconf/resolv.conf.d/bas ...

  5. 华为OJ平台——求最大连续bit数

    题目描述: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1 输入: 一个byte型的数字    输出: 对应的二进制数字中1的最大连续数 思路: ...

  6. 用verilog模拟DDS产生正弦波信号

    前言: DDS:直接数字频率合成,正弦波0-2pi周期内,相位到幅度是一一对应的(这里我们使用放大后的整数幅度). 主要思路: 个人理解,FPGA不擅长直接做数字信号计算,那样太占用片上逻辑资源,所以 ...

  7. ping 以及 traceroute 用法

    目的:学习linux命令ping,traceroute的用法 1:ping的用法: man ping ping:判断某个主机是否有响应 linux-8o9i:~ # 119.29.29.29 PING ...

  8. Widows2003开机取消按CTRL+ALT+DEL

    一, Widows2003开机取消按CTRL+ALT+DEL 1. 单击windows开始键→管理工具→本地安全策略(如下图) 2. 本地安全设置→本地策略→安全选项 3. 安全选项→右侧→找到这个文 ...

  9. 一个简单的SpringMVC3 程序

    初学者对于Spring框架的难度:引用Jar包不全,或者不正确: 1.运行界面 2.客户端页面 index.jsp 的代码 <%@ page language="java" ...

  10. Linux下对于inode的理解

    0x01 什么是inode 文件存储在硬盘上,硬盘的最小存储单位叫做“扇区”(Sector),每个扇区储存512字节: 操作系统读取硬盘时,不会一个个扇区地读取,这样效率低,而是一次性连续读取多个扇区 ...