读取PDF中的数据表格并生成xlsx格式文件!

本程序代码所需的java包为:
commons-io-2.6.jar
commons-logging-1.2.jar
fontbox-2.0.11.jar
pdfbox-2.0.11.jar
poi-3.17.jar
https://download.csdn.net/download/liyunfan00/10578886

package 读取PDF;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import org.apache.commons.io.FileUtils;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
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;


public class getMessage_pdf {

    private static HSSFWorkbook workbook;
    private static InputStreamReader input;

    public static void main(String[] args) throws Exception {
        ParsePdf("D:\\360Downloads\\***.pdf");
        setUpExcel("D:\\360Downloads\\***.pdf");
    }

    //将PDF中的数据读出,并写出到txt文件
    public static void ParsePdf(String path) throws Exception {
        File file = new File(path);
        //获取PDF的信息
        PDDocument doc = PDDocument.load(file);
        // 文件地址均为第一次输入的工作目录下,文件名不变,只将文件的后缀更改
        String s = path.substring(0, path.length() - 4);
        //生成txt的输出流
        FileOutputStream fos = new FileOutputStream(s + ".txt");
        //设置txt文件输出地址以及字符编码
        Writer writer = new OutputStreamWriter(fos, "UTF-8");
        PDFTextStripper stripper = new PDFTextStripper();
        stripper.setSortByPosition(true);// 排序
        //将数据输出到指定的txt文件中
        stripper.writeText(doc, writer);
        //关闭
        writer.close();
        doc.close();
    }

    //将txt中的数据读出并生成excel文件
    public static void setUpExcel(String path) throws IOException{      
        // 文件地址均为第一次输入的工作目录下,文件名不变,只将文件的后缀更改
        String new_path = path.substring(0, path.length() - 4);
        File file=new File(new_path + ".txt");
        input = new InputStreamReader(new FileInputStream(file),"UTF-8");
        BufferedReader br = new BufferedReader(input);
        workbook = new HSSFWorkbook();

        //创建工作表
        HSSFSheet sheet=workbook.createSheet("sheet1");

        //将数据写入表格中          
        String line=null;
        int i=0;
        while((line=br.readLine())!=null)
        {
            String[] values = line.split(" ");
            HSSFRow row2=sheet.createRow(i++);//创建第i行
            for(int j=0;j//创建第j列
                cell2.setCellValue(values[j]);//设置第j列的数字
            }   
        }
        br.close();

        //创建一个文件,将Excel内容存盘
        File result_file=new File(new_path+".xlsx");
        try {
            result_file.createNewFile();
            FileOutputStream OutputStream=FileUtils.openOutputStream(result_file);
            workbook.write(OutputStream);
            OutputStream.close();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }
}

本程序的设计思路为:先读取pdf文件,之后输出为txt格式文件;再读取生成的txt文件输出为excel表格。(我尝试过读出PDF文件后直接生成excel,但是未成功,只能生成txt格式的文件,于是我只能采用的折中的办法,若是哪位博友最后研究出了直接生成excel的方法,望你能留言,我们交流交流,谢谢!)

你可能感兴趣的:(java)