如何基于二维数组创建表?

时间:2014-06-25 09:16:33

标签: javafx javafx-2 itext

private List<List<String>> tableOverallList;

我在此列表中有一系列列表。它在每个列表中包含8个值。我需要将它放在创建的表中。我想有2列8列。对于第一排我有这个清单。

String[] tableTitleList = {" Title", " (Re)set", " Obs", " Mean", " Std.Dev", " Min", " Max", "    Unit"};
List<String> tabTitleList = Arrays.asList(tableTitleList);

帮助我将第一个值列表放在第二行的列表tableOverallList中。我将尝试管理列表的其余部分。

        PdfPTable table = new PdfPTable(3); // 3 columns.

        PdfPCell cell1 = new PdfPCell(new Paragraph("Cell 1"));
        PdfPCell cell2 = new PdfPCell(new Paragraph("Cell 2"));
        PdfPCell cell3 = new PdfPCell(new Paragraph("Cell 3"));
        PdfPCell cell3 = new PdfPCell(new Paragraph("Cell 4"));
        PdfPCell cell3 = new PdfPCell(new Paragraph("Cell 5"));
        PdfPCell cell3 = new PdfPCell(new Paragraph("Cell 6"));
        PdfPCell cell3 = new PdfPCell(new Paragraph("Cell 7"));
        PdfPCell cell3 = new PdfPCell(new Paragraph("Cell 8"));

        table.addCell(cell1);
        table.addCell(cell2);
        table.addCell(cell3);
        table.addCell(cell4);
        table.addCell(cell5);
        table.addCell(cell6); 
        table.addCell(cell7);
        table.addCell(cell8);

        document.add(table);

1 个答案:

答案 0 :(得分:0)

这真的很容易。所以你有一个嵌套列表中的数据。例如:

public List<List<String>> getData() {
    List<List<String>> data = new ArrayList<List<String>>();
    String[] tableTitleList = {" Title", " (Re)set", " Obs", " Mean", " Std.Dev", " Min", " Max", "Unit"};
    data.add(Arrays.asList(tableTitleList));
    for (int i = 0; i < 10; ) {
        List<String> dataLine = new ArrayList<String>();
        i++;
        for (int j = 0; j < tableTitleList.length; j++) {
            dataLine.add(tableTitleList[j] + " " + i);
        }
        data.add(dataLine);
    }
    return data;
}

这将返回一组数据,其中第一个记录是标题行,后面的10行包含模拟数据。假设这是您拥有的数据。

现在,当您想要在表格中呈现此数据时,请执行以下操作:

PdfPTable table = new PdfPTable(8);
table.setWidthPercentage(100);
List<List<String>> dataset = getData();
for (List<String> record : dataset) {
    for (String field : record) {
        table.addCell(field);
    }
}
document.add(table);

结果如下:

enter image description here

您可以在此处找到完整的源代码:ArrayToTable这是生成的PDF:array_to_table.pdf

如果您只想要2行,标题行和数据行,请更改以下行:

    for (int i = 0; i < 10; ) {

进入这个:

    for (int i = 0; i < 2; ) {

我提供了更通用的解决方案,因为拥有通用代码会更优雅。