我正在尝试在 JSP 页面中使用 Apache POI 从输入 Excel 工作表生成 HTML 表。我已经成功编写了从 Excel 获取数据并显示为 HTML 表的部分,但问题是一些主 ID 已在几行中重复,但它们在其他行中具有不同的值。示例(2 个具有不同姓氏的约翰):
<table>
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>John</td>
<td>Jackson</td>
<td>94</td>
</tr>
<tr>
<td>John</td>
<td>Doe</td>
<td>80</td>
</tr>
</table>
生成表的代码:
out.println("<table>");
while (rowIter.hasNext())
{
row =(HSSFRow)rowIter.next();
input_fname = row.getCell(0);
input_lname = row.getCell(1);
input_age = row.getCell(2);
fname = input_fname.getRichStringCellValue().getString();
lname = input_lname.getRichStringCellValue().getString();
age = input_age.getRichStringCellValue().getString();
out.println("<tr>");
out.println("<td>"+fname+"</td>");
out.println("<td>"+lname+"</td>");
out.println("<td>"+age+"</td>");
out.println("</tr>");
}
}
out.println("</table>");
请告诉我如何根据主 ID、名字合并重复的行,如下所示:
<table>
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td rowspan="2">John</td>
<td>Jackson</td>
<td>94</td>
</tr>
<tr>
<td>Doe</td>
<td>80</td>
</tr>
</table>
我尝试过搜索类似的问题,但我找不到任何解决方案来解决我的问题,而且我是 Javascript 和 JQuery 的初学者(也许这就是问题所在)。非常感谢任何建议。提前致谢!
最佳答案
你问错问题了。首先正确编写 HTML 比尝试对 HTML 进行一些合并不是更容易吗?
因此,循环条目并将它们放入一些合适的数据结构中,例如以 fname 为键并以列表作为值的 Map。 Person 类是一个保存数据的简单 bean。
Map<String, List<Person>> people = new TreeMap<String, List<Person>> ();
while (rowIter.hasNext())
{
row =(HSSFRow)rowIter.next();
input_fname = row.getCell(0);
input_lname = row.getCell(1);
input_age = row.getCell(2);
fname = input_fname.getRichStringCellValue().getString();
lname = input_lname.getRichStringCellValue().getString();
age = input_age.getRichStringCellValue().getString();
Person person = new Person(fname, lname, age);
if(! people.containsKey(person.fname)){
people.put(person.fname, new ArrayList<Person>());
}
people.get(person.fname).add(person);
}
}
然后循环这个数据结构并编写 HTML:
for(String key : people.keySet()){
List<Person> persons = people.get(key));
int rowSpan = persons.size();
//write the HTML accordingly.
}
关于javascript - 合并JSP表中的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38093211/