javascript - 合并JSP表中的重复行

标签 javascript jquery html jsp apache-poi

我正在尝试在 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/

相关文章:

javascript - 我可以在 ember 中编写帮助程序以避免代码重复的地方

javascript - jquery在android中点击滚动到div的顶部

Javascript/Jquery Internet Explorer 在点击时显示 div 的问题

html - CSS Body 宽度不适用于每个网页

javascript - 自定义大小调整工具在 Canvas 绘图中不起作用

javascript - 基本 Entity Framework Web API : The INSERT statement conflicted with the FOREIGN KEY constraint

javascript - 如何使用 jsFiddle 选择 1 个以上的框架?

javascript - 对不同 URL 的 AJAX GET 请求将原始 URL 附加到 GET 查询

javascript - 您能否将 tabindex 放在 HTML 中的 <a> 元素上,并且当使用 Tab 键切换到该元素时,可以单击它而不是必须输入它?

jquery - 单击时 Glyphicon 图标更改