所需的jar包哦也不要太记得了,大家可以搜搜,直接上代码:

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.NumberFormat; import org.apache.commons.io.FileUtils;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.poi.POIXMLDocument;
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.extractor.WordExtractor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor; /**
*文件内容读取转换器
*/
public class ReadFileConverter
{ public String getContents(String path) throws Exception
{
  String contents = "";
  int index = path.lastIndexOf(".");
  String file_suffix = path.substring(index+1).toLowerCase();
  if(file_suffix.equalsIgnoreCase("txt")||file_suffix.equalsIgnoreCase("log")){
    contents = this.readTXT(path);
  }
  else if(file_suffix.equalsIgnoreCase("xls")){
    contents = this.readXLS(path);
  }
  else if(file_suffix.equalsIgnoreCase("xlsx")){
    contents = this.readXLSX(path);
  }
  else if(file_suffix.equalsIgnoreCase("doc")){
    contents = this.readDOC(path);
  }
  else if(file_suffix.equalsIgnoreCase("docx")){
    contents = this.readDOCX(path);
  }
  else if(file_suffix.equalsIgnoreCase("pdf")){
    contents = this.readPDF(path);
  }
  return contents;
} public String readXLS(String file) throws Exception
{
  StringBuilder content = new StringBuilder();
  HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(file));
  try{
    for(int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++){
      if (null != workbook.getSheetAt(numSheets)){
        HSSFSheet aSheet = workbook.getSheetAt(numSheets);// 获得一个sheet
        for(int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++){
          if (null != aSheet.getRow(rowNumOfSheet)){
            HSSFRow aRow = aSheet.getRow(rowNumOfSheet); // 获得一个行
            for(short cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++){
              if (null != aRow.getCell(cellNumOfRow)){
                HSSFCell aCell = aRow.getCell(cellNumOfRow);// 获得列值
                if (this.convertCell(aCell).length() > 0){
                  content.append(this.convertCell(aCell));
                 }
              }
              content.append("\n");
            }
          }
        }
      }
    }
  }
  catch(Exception e){
    content.append("xls文件格式不对或损坏");
  }
  finally{
    if(workbook!=null){
      workbook.close();
    }
  }
  return content.toString();
} public String readXLSX(String file) throws Exception
{
  StringBuilder content = new StringBuilder();
  XSSFWorkbook workbook = new XSSFWorkbook(file);
  try{
    for(int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++){
      if (null != workbook.getSheetAt(numSheets)){
        XSSFSheet aSheet = workbook.getSheetAt(numSheets);// 获得一个sheet
        for(int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++){
          if (null != aSheet.getRow(rowNumOfSheet)){
            XSSFRow aRow = aSheet.getRow(rowNumOfSheet); // 获得一个行
            for(short cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++){
              if (null != aRow.getCell(cellNumOfRow)){
                XSSFCell aCell = aRow.getCell(cellNumOfRow);// 获得列值
                if (this.convertCell(aCell).length() > 0){
                  content.append(this.convertCell(aCell));
                }
              }
              content.append("\n");
            }
          }
        }
      }
    }
  }catch(Exception e){
    content.append("xlsx文件格式不对或损坏");
  }
  finally{
    if(workbook!=null){
      workbook.close();
    }
  }
  return content.toString();
} public String readTXT(String file) throws Exception
{
  String contents = "";
  try{
    String encoding = this.get_charset(new File(file));
    if (encoding.equalsIgnoreCase("GBK")) {
      contents = FileUtils.readFileToString(new File(file), "gbk");
    } else {
      contents = FileUtils.readFileToString(new File(file), "utf8");
    }
  }catch(Exception e){
    contents = "txt文件格式不对或损坏";
  }
  return contents;
} public String readDOC(String file) throws Exception
{
  String returnStr;
  WordExtractor wordExtractor = new WordExtractor(new FileInputStream(new File(file)));
  try{
    returnStr = wordExtractor.getText();
  }catch(Exception e){
    returnStr="doc文件格式不对或损坏";
  }
  finally{
    if(wordExtractor != null){
      wordExtractor.close();
    }
  }
  return returnStr;
} public String readDOCX(String file) throws Exception
{
  String docx;
  XWPFWordExtractor xwp= new XWPFWordExtractor(POIXMLDocument.openPackage(file));
  try{
    docx= xwp.getText();
  }catch(Exception e){
    docx="docx文件格式不对或损坏";
  }
  finally{
    if(xwp !=null){
      xwp.close();
    }
  }
  return docx;
} public String readPDF(String file) throws Exception
{
  String result = null;
  FileInputStream is = null;
  PDDocument document = null;
  try{
    is = new FileInputStream(file);
    document = PDDocument.load(is);
    PDFTextStripper stripper = new PDFTextStripper();
    result = stripper.getText(document);
  }catch(Exception e){
    result="pdf文件格式不对或损坏";
  }
  finally{
    if (is != null){
      is.close();
    }
    if (document != null){
      document.close();
   }
  }
  return result;
} private String get_charset(File file) throws IOException
{
  String charset = "GBK";
  byte[] first3Bytes = new byte[3];
  BufferedInputStream bis = null;
  try {
    boolean checked = false;
    bis = new BufferedInputStream(new FileInputStream(file));
    bis.mark(0);
    int read = bis.read(first3Bytes, 0, 3);
    if (read == -1)
      return charset;
    if (first3Bytes[0] == (byte) 0xFF && first3Bytes[1] == (byte) 0xFE) {
      charset = "UTF-16LE";
      checked = true;
    } else if (first3Bytes[0] == (byte) 0xFE&& first3Bytes[1] == (byte) 0xFF) {
      charset = "UTF-16BE";
      checked = true;
    } else if (first3Bytes[0] == (byte) 0xEF&& first3Bytes[1] == (byte) 0xBB&& first3Bytes[2] == (byte) 0xBF) {
      charset = "UTF-8";
      checked = true;
    }
    bis.reset();
    if (!checked) {
      // int len = 0;
      int loc = 0;
      while ((read = bis.read()) != -1) {
        loc=loc+1;
        if (read >= 0xF0)
          break;
        if (0x80 <= read && read <= 0xBF) // 单独出现BF以下的,也算是GBK
          break;
        if (0xC0 <= read && read <= 0xDF) {
          read = bis.read();
          if (0x80 <= read && read <= 0xBF) // 双字节 (0xC0 - 0xDF)
          // (0x80
          // - 0xBF),也可能在GB编码内
            continue;
          else
            break;
        } else if (0xE0 <= read && read <= 0xEF) {// 也有可能出错,但是几率较小
          read = bis.read();
          if (0x80 <= read && read <= 0xBF) {
            read = bis.read();
            if (0x80 <= read && read <= 0xBF) {
              charset = "UTF-8";
              break;
            } else
              break;
          } else
            break;
        }
      }
    }
  } catch (Exception e) {
    e.printStackTrace();
  } finally {
    if (bis != null) {
      bis.close();
    }
  }
  return charset;
} @SuppressWarnings("deprecation")
private String convertCell(Cell cell)
{
  NumberFormat formater = NumberFormat.getInstance();
  formater.setGroupingUsed(false);
  String cellValue = "";
  if (cell == null) {
    return cellValue;
  }
  switch (cell.getCellTypeEnum()) {
    case NUMERIC:
      cellValue = formater.format(cell.getNumericCellValue());
      break;
    case STRING:
      cellValue = cell.getStringCellValue();
      break;
    case BLANK:
      cellValue = cell.getStringCellValue();
      break;
    case BOOLEAN:
      cellValue = Boolean.valueOf(cell.getBooleanCellValue()).toString();
      break;
    case ERROR:
      cellValue = String.valueOf(cell.getErrorCellValue());
      break;
    default:
      cellValue = "";
    }
    return cellValue.trim();
  } }

Java读取各种文件格式内容的更多相关文章

  1. java读取txt文件内容

    package read; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public ...

  2. Java 读取文件的内容

    Java 读取文件的内容 1) CLASS_NAME: 换成自己真实的类名 2) /page/test.json: 换成自己真实的page 3) FileUtils: 来自于org.apache.co ...

  3. java读取excel文件内容

    1.导入依赖JAR包 <!-- jxl 操作excel --> <dependency> <groupId>org.jxls</groupId> < ...

  4. 实验10—— java读取歌词文件内容动画输出

    1.Read.java package cn.tedu.demo; import java.io.BufferedReader; import java.io.File; import java.io ...

  5. Java 读取Excel 文件内容

    在一个项目中,有一个需求,是把excel文件的内容转换为xml格式展示.在学习如何操作的过程中,首先是如何获取excel文件,其中操作的代码如下: 1.首先是导入需要的 jar, 下载地址:https ...

  6. JAVA读取Excel中内容(HSSF和Workbook两种方法)

    内容添加,以前是用的HSSF,前几天帮同学写一个统计表用了Workbook,现在码一下. ---新内容(Workbook)--- 同学要统计一个xls表格,让表1里面的某一列内容对表2里面的每列进行匹 ...

  7. Java 读取 txt 文件内容到容器 List

    方法一: 一.桌面上准备 DataObject.txt 文件,内容为: 二.打开 Eclipse,编写代码如下: import java.io.BufferedReader; import java. ...

  8. Java读取粘贴板内容

    package com.test.jvm.oom.design; import java.awt.Image; import java.awt.Toolkit; import java.awt.dat ...

  9. 用java读取多种文件格式的文件(pdf,pptx,ppt,doc,docx..)

    本文通过开源pdfbox和poi进行处理多种文件格式的文本读入 1.需要的jar的maven坐标: <dependency> <groupId>org.apache.pdfbo ...

随机推荐

  1. CF213E Two Permutations 线段树维护哈希值

    当初竟然看成子串了$qwq$,不过老师的$ppt$也错了$qwq$ 由于子序列一定是的排列,所以考虑插入$1$到$m$到$n-m+1$到$n$; 如何判断呢?可以用哈希$qwq$: 我们用线段树维护哈 ...

  2. spring容器中的beanName

    1. 一个类实现多个接口 如下图中的JobService.java, 此时这个beanName=jobService,  没有包名,类名字首字母小写 可以使用下面三种方式获得这个bean IProce ...

  3. Linux中ext2文件系统的结构

    1.ext2产生的历史 最早的Linux内核是从MINIX系统过渡发展而来的.Linux最早的文件系统就是MINIX文件系统.MINIX文件系统几乎到处都是bug,采用的是16bit偏移量,最大容量为 ...

  4. Solr7.x介绍安装和配置(单机版)

    之前学的是4.x,然后一看官网,奶奶的都7.x了.于是查了一番资料..... 1)下载和安装 wget http://mirror.bit.edu.cn/apache/lucene/solr/7.3. ...

  5. 浅谈堆-Heap(一)

    应用场景和前置知识复习 堆排序 排序我们都很熟悉,如冒泡排序.选择排序.希尔排序.归并排序.快速排序等,其实堆也可以用来排序,严格来说这里所说的堆是一种数据结构,排序只是它的应用场景之一 Top N的 ...

  6. 用汇编实现add函数

    平台 macOS 工具 nasm clang 文件 main.c #include <stdio.h> int add(int a, int b); int main() { printf ...

  7. Java继承改进

    一.java继承改进 首先,多继承的缺点: 1.继承多个父类,父类中方法名相同,产生歧义 2.父类中方法同名,子类未覆盖,也会歧义 所以,java改进,类只能单继承,接口可以多继承 接口中只有抽象方法 ...

  8. Android使用文件管理器打开指定文件夹,浏览里面的内容

    Android下可以打开一些文件,带有.doc 等后缀的文件网上一般都有解释,这个写一个使用文件管理器打开指定文件夹的 private void openAssignFolder(String pat ...

  9. [AngularJS] $location 服务简介

    参考博客:  https://www.cnblogs.com/gaoruixin/p/6070502.html 简介 $location服务解析在浏览器地址栏中的URL(基于window.locati ...

  10. Callable的简单使用

    说起java的线程操作,都会想到Thread和Runable这两个, 这两个类可以实现异步和同步. 在大多数的java开发中, 这两个都是实现异步的线程来使用, 但是现在考虑一种情况: 发出一条线程, ...