亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從 Java 調用 tabula (JAR)?

如何從 Java 調用 tabula (JAR)?

收到一只叮咚 2021-11-24 16:03:54
Tabula 看起來像是從 PDF 中提取表格數據的好工具。有很多示例說明如何從命令行調用它或在 Python 中使用它,但似乎沒有任何可用于 Java 的文檔。有沒有人有一個有效的例子?請注意,tabula 確實提供了源代碼,但在版本之間似乎很混亂。例如,GitHub 上的示例引用了 JAR 中似乎不存在的 TableExtractor 類。https://github.com/tabulapdf/tabula-java
查看完整描述

2 回答

?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

您可以使用以下代碼從 Java 中調用 tabula,希望對您有所幫助


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

    final String FILENAME="../test.pdf";


    PDDocument pd = PDDocument.load(new File(FILENAME));


    int totalPages = pd.getNumberOfPages();

    System.out.println("Total Pages in Document: "+totalPages);


    ObjectExtractor oe = new ObjectExtractor(pd);

    SpreadsheetExtractionAlgorithm sea = new SpreadsheetExtractionAlgorithm();

    Page page = oe.extract(1);


    // extract text from the table after detecting

    List<Table> table = sea.extract(page);

    for(Table tables: table) {

        List<List<RectangularTextContainer>> rows = tables.getRows();


        for(int i=0; i<rows.size(); i++) {


            List<RectangularTextContainer> cells = rows.get(i);


            for(int j=0; j<cells.size(); j++) {

                System.out.print(cells.get(j).getText()+"|");

            }


           // System.out.println();

        }

    }


}


查看完整回答
反對 回復 2021-11-24
?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

// ****** Extract text from the table after detecting & TRANSFER TO XLSX *****

    XSSFWorkbook wb = new XSSFWorkbook();

    Sheet sheet = wb.createSheet("Barang Baik");

    List<Table> table = sea.extract(page);

    for (Table t : table) {

        int rowNumber = 0;

        try {

            while (sheet.getRow(rowNumber).getCell(0) != null) {

                rowNumber++;

            }

        } catch (Exception e) { }


        List<List<RectangularTextContainer>> rows = t.getRows();

        for (int i = 0; i < rows.size(); i++) {

            List<RectangularTextContainer> cells = rows.get(i);

            Row row = sheet.createRow(i+rowNumber);

            for (int j = 0; j < cells.size(); j++) {

                Cell cell = row.createCell(j);

                String cellValue = cells.get(j).getText();

                cell.setCellValue(cellValue);

            }

        }

        FileOutputStream fos = new FileOutputStream("C:\\your\\file.xlsx");

        wb.write(fos);

        fos.close();

    }


查看完整回答
反對 回復 2021-11-24
  • 2 回答
  • 0 關注
  • 590 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號