gpt4 book ai didi

java - 使用 POI 和 Jsoup 的超链接位于错误位置

转载 作者:行者123 更新时间:2023-12-01 11:14:28 25 4
gpt4 key购买 nike

我有一个像这样的 html 表格

| Data0 | Data1(with href) | Data2(with href) | Data3 |...| Data10 |
| Data0 | Data1(with href) | Data2(with href) | Data3 |...| Data10 |
<小时/>

更新:表格的HTML代码

<table cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr><th>...</th></tr>
<tr>
<td>Data0</td>
<td><a href="http://www.abc1.org">Data1</a></td>
<td><a href="http://www.abc2.org">Data2</a></td>
<td>Data3</td>
<td>Data4</td>
...
<td>Data10</td>
</tr>
<tr><!--2nd record--></tr>
<tr><!--3rd record--></tr>
</tbody>
</table>
<小时/>

在 Excel 输出中,所有文本都将成功检索。

<小时/>

目的:我希望将 Data1 的超链接嵌入到带有文本“Data1”的单元格,但我的代码会将超链接嵌入到“Data10”。

Excel 中的预期第一行:

| Data0 | Data1(with hyperlink to www.abc1.org) | Data2 | Data3 |...| Data10 |

Excel 中的当前输出:

| Data0 | Data1 | Data2 | Data3 |...| Data10(with hyperlink to www.abc1.org) |
<小时/>

我的部分代码在这里(相关代码):

    Hyperlink link = createHelper.createHyperlink(Hyperlink.LINK_URL);
Elements tds = row.select("td");
count = 0; //cell location at that row
for (Element element : tds) {
cell = header.createCell(count);
link.setAddress(row.select("td a[href]").first().attr("href"));
cell.setCellValue(element.text());
cell.setHyperlink(link);
count++;
}

提前致谢。

最佳答案

1) 你只有一个

Hyperlink link = createHelper.createHyperlink(Hyperlink.LINK_URL);

在循环中,每次都使用内的第一个 td a 链接覆盖链接。

要解决此问题,您可能需要为要使用的每个链接创建一个新的链接实例。 (我对apache-poi不熟悉,所以我可能是错的)

1) CSS 选择器

row.select("td a[href]").first().attr("href")

将始终选择行中第一个 td 中的第一个 href 字符串。我猜您想选择与 td 对应的 href 字符串(如果存在)。

建议的代码片段

Elements tds = row.select("td");
count = 0; //cell location at that row
for (Element element : tds) {
cell = header.createCell(count);

cell.setCellValue(element.text());
Element href = element.select("a[href]").first();
if (href != null){
Hyperlink link = createHelper.createHyperlink(Hyperlink.LINK_URL);
link.setAddress(href.attr("href"));
cell.setHyperlink(link);
}
count++;
}

请注意,我的代码未经测试。

关于java - 使用 POI 和 Jsoup 的超链接位于错误位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31991292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com