您能告诉我如何使用java中的ApachePOI将html表数据呈现到Excel单元格中吗。我有以下要求,比如。。
<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和ApachePOI实现这一点
在build.gradle中需要以下依赖项
implementation 'org.apache.poi:poi:5.0.0'
implementation 'org.apache.poi:poi-ooxml:5.0.0'
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();
}
}
我有一个excel表格,有n行6列,我需要将所有这些行插入数据库表。所以我想把每一行的单元格转换成逗号分隔,并用引号列表标记。此外,如果任何单元格为空,则其值应标记为空字符串(“”) 示例:示例图像
问题内容: 是否有任何jQuery或javascript库根据给定的json数据生成动态表?我不想定义列,该库应该读取json哈希中的键并生成列。 当然,我可以自己遍历json数据并生成html表。我只想知道是否存在可以简单重用的此类库。 问题答案: 感谢大家的答复,这使用jQuery。 程式码片段:
pre { white-space: pre-wrap; } 本实例演示如何转换表格(table)为数据网格(datagrid)。 数据网格(datagrid)的列信息是定义在 <thead> 标记中,数据是定义在 <tbody> 标记中。确保为所有的数据列设置 field 名称,请看下面的实例: <table id="tt"> <thead> <
问题内容: 如何使用PHP将html转换为word / excel / powerpoint? 问题答案: 尝试以下PHP类: Php电子表格 PHPWord PHP演示 到目前为止,我仅使用PHPExcel,但它工作得很好并且易于学习。由于所有课程均来自同一家公司,因此我认为它们也应满足您的需求。
我对Spark SQL很陌生。在执行一项培训任务时,我遇到了以下问题,无法找到答案(以下所有示例都有点愚蠢,但出于演示目的,应该仍然可以)。 我的应用程序读取拼花文件并根据其内容创建数据集: 数据集。show()调用结果: 然后,我将数据集转换为一个新的数据集,其中包含Person类型: 哪里 最后,当我显示数据集的内容时,我希望看到 然而,我明白了 这是toString()方法的结果,而标头是正
问题内容: 我的表格格式 我在网上找到了以下代码。但是,如果我使用“ thead”和“ tbody”标签,那是行不通的 问题答案: 您在Internet上找到的解决方案无法正常工作的原因是因为线路开始。该变量只有两个元素,是和。该行正在寻找内的所有元素是。你能做的最好的事情就是给一个id你和然后抓住所有基于该值。说您有: 然后对标记执行相同的操作 编辑:我也强烈建议使用jQuery。它将缩短为: