使用tabula-java解析pdf的表格生成csv,再用opencsv读取csv

1 篇文章 0 订阅
1 篇文章 0 订阅

尘封已久,再次开写。

为了回报社会,促进中国软件行业的发展。

我是大爱不留。

====================================================================

解析pdf,可以用itext, pdfbox,然而这2个解析pdf表格却不行。
不能一行一行的解析。 要解析pdf的表格,还是得用tabula-java。

用tabula-java解析pdf的表格,生成csv,再用opencsv读取csv的数据。

1. pom.xml

加入tabula-java、opencsv依赖

    <dependencies>

        <dependency>

            <groupId>technology.tabula</groupId>

            <artifactId>tabula</artifactId>

            <version>1.0.2</version>

        </dependency>

        <dependency>

            <groupId>com.opencsv</groupId>

            <artifactId>opencsv</artifactId>

            <version>4.2</version>

        </dependency>

    </dependencies>

2.  解析pdf表格,生成csv

    public static void main(String[] args) throws Exception {

        // TODO Auto-generated method stub

        String[] ar = {"-o=d:/output.csv", "-p=all", "E:\\doc\\pdf\\(2018) .pdf"};

        CommandLineApp.main(ar);

        //PdfUtil.convert2Csv("E:\\doc\\pdf\\(2018) .pdf", "output.csv");

    }

3. 运行结果

 

4. 用opencsv解析csv

package com.lzm.util;

import java.io.FileReader;

import java.util.List;

import com.lzm.a1.bean.Case;

import com.opencsv.CSVReader;

public class CsvUtil {

    public static void main(String[] args) throws Exception {

        CSVReader reader = new CSVReader(new FileReader("d:/output.csv"));

        // 一次读取全部行

        // List<String[]> myEntries = reader.readAll();

        Case c = new Case();

        String[] nextLine;

        int lineNumber = 1;

        // 每次读一行

        while ((nextLine = reader.readNext()) != null) {

            // nextLine[] is an array of values from the line

            if (lineNumber == 1) {

                c.setCaseNo(nextLine[1]); // 第1行第2列

                c.setHandler(nextLine[3]); // 第1行第4列

            } else if (lineNumber == 2) {

                c.setExecutedName(nextLine[1]);

                c.setExecutedIdn(nextLine[3]);

            }

            lineNumber++;

        }

        System.out.println(c);

    }

}

csdn比QQ空间好用! 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大爱不留

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值