簡體   English   中英

HTML 表數據進入 Excel 單元格使用 POI java

[英]HTML table data into Excel cell usin POI java

請告訴我如何使用 Z921F725A04E9D936910DED8FDCZ 單元格將 html 表數據渲染到 Excel 單元格中,使用 Z923F70D6F33DD956F42794Z POI 中的 Z921F725A048423F33 我有以下要求,例如..

<table border="1" cellpadding="1" cellspacing="1" style="width:500px;">
<tbody>
<tr>
<td>details</td>
<td>testing</td>
</tr>
<tr><td>1</td>
<td>220</td>
</tr>
<tr><td>3</td>
<td>4</td>
<td>10</td>
</tr></tbody>
</table>

但它只是作為文本字符串出現..在此處輸入圖像描述

這里基本上你需要將 HTML 解析並轉換為數據行,然后最后寫入 excel。 我將向您展示如何使用 Gradle、Jsoup 和 apache poi 進行操作

您需要 build.gradle 中的以下依賴項

    implementation 'org.apache.poi:poi:3.15'
    implementation 'org.apache.poi:poi-ooxml:3.15'
    implementation group: 'org.jsoup', name: 'jsoup', version: '1.11.3'

這是轉換和寫入 excel 的代碼

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class Test {

    public static void main(String[] args) throws IOException {
        //HTML to Data
        String data = "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:500px;\">\n" +
            "<tbody>\n" +
            "<tr>\n" +
            "<td>details</td>\n" +
            "<td>testing</td>\n" +
            "</tr>\n" +
            "<tr><td>1</td>\n" +
            "<td>220</td>\n" +
            "</tr>\n" +
            "<tr><td>3</td>\n" +
            "<td>4</td>\n" +
            "<td>10</td>\n" +
            "</tr></tbody>\n" +
            "</table>";
        Document doc = Jsoup.parse(data);
        Element table = doc.select("table").get(0); //select the first table.
        Elements rows = table.select("tr");
        Element headerRow = rows.get(0);
        List<String> headers = new ArrayList<>();
        List<List<String>> dataRows = new ArrayList<>();
        Elements headerColumns = headerRow.select("td");
        for (int l = 0; l < headerColumns.size(); l++) {
            headers.add(headerColumns.get(l).text());
        }
        System.out.println(headers);
        for (int i = 1; i < rows.size(); i++) {
            Element row = rows.get(i);
            Elements cols = row.select("td");
            List<String> dataRow = new ArrayList<>();
            for (int j = 0; j < cols.size(); j++) {
                dataRow.add(cols.get(j).text());
            }
            dataRows.add(dataRow);
        }
        //Data to excel
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("data");
        Row header = sheet.createRow(0);
        for (int k = 0; k < headers.size(); k++) {
            Cell headerCell = header.createCell(k);
            headerCell.setCellValue(headers.get(k));
        }

        for (int i = 0; i < dataRows.size(); i++) {
            Row r = sheet.createRow(i + 1);
            List<String> d = dataRows.get(i);
            for (int j = 0; j < d.size(); j++) {
                Cell dataCell = r.createCell(j);
                dataCell.setCellValue(d.get(j));
           }
        }

        File currDir = new File(".");
        String path = currDir.getAbsolutePath();
        String fileLocation = path.substring(0, path.length() - 1) + "Data.xlsx";

        FileOutputStream outputStream = new FileOutputStream(fileLocation);
        workbook.write(outputStream);
        workbook.close();
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM