Как сгенерировать LinkedHashMap в форме таблицы, которая была сгенерирована динамически с использованием itext7 - PullRequest
0 голосов
/ 12 декабря 2018

This is the output table Это код для генерации динамической таблицы.Может ли кто-нибудь помочь преобразовать эти данные таблицы в LinkedHashMap формат таблицы.

Пожалуйста, дайте мне некоторую идею объединить таблицу в LinkedHashMap.

    Table content = new Table(UnitValue.createPercentArray(new float[]{5,5,5}));
    content.setWidth(UnitValue.createPercentValue(100));
    for (int i = 0; i < 2; i++) {
        Cell[] headerFooter = new Cell[] {
                new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph("#")),
                new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph("Key")),
                new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph("Value"))
        };
        for (Cell hfCell : headerFooter) {
            if (i == 0) {
                content.addHeaderCell(hfCell);
            } else {
                //content.addFooterCell(hfCell);
            }
        }
    }

    for(int counter = 1; counter <4; counter++){

        Cell[] contentTable = new Cell[]{
                new Cell(2,2).setTextAlignment(TextAlignment.CENTER).add(new Paragraph(String.valueOf(counter))).setBackgroundColor(ColorConstants.LIGHT_GRAY),
                new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph("key " + counter)),
                new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph("value " + counter))

        };


        for (Cell tabCell : contentTable){                              
            if(counter % 2 == 0){                   
                tabCell.setBackgroundColor(DeviceGray.WHITE);
            }else {                 
                tabCell.setBackgroundColor(new DeviceGray(0.75f));  
            }

            content.addFooterCell(tabCell);
        }

    }

Ответы [ 3 ]

0 голосов
/ 13 декабря 2018

Наконец, вот вывод, который я искал. Спасибо всем за поддержку:)

        LinkedHashMap<String, Cell> hash = new LinkedHashMap<>();

        for(int counter = 1; counter <4; counter++){


            Cell[] contentTable = new Cell[]{
                    new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph(String.valueOf(counter))).setBackgroundColor(ColorConstants.LIGHT_GRAY),
                    new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph("key " + counter)),
                    new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph("value " + counter))

            };

            for (Cell tabCell : contentTable){  
                hash.put("key",tabCell);
                if(counter % 2 == 0){                   
                    tabCell.setBackgroundColor(DeviceGray.WHITE);
                }else {                 
                    tabCell.setBackgroundColor(new DeviceGray(0.75f));  
                }

                content.addFooterCell(hash.get("key"));

            }

        }
0 голосов
/ 14 декабря 2018

Ваш вопрос все еще не совсем кристально ясен, но согласно вашим частичным ответам, я думаю, вы ищете следующий ответ:

public void enhanceHashMapWithTable() {
    Table content = new Table(UnitValue.createPercentArray(new float[] { 5, 5, 5 }));
    Map<String, Cell> hash = new LinkedHashMap<>();

    for (int counter = 1; counter < 4; counter++) {
        Cell[] contentTable = new Cell[] {
                new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph(String.valueOf(counter)))
                        .setBackgroundColor(ColorConstants.LIGHT_GRAY),
                new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph("key " + counter)),
                new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph("value " + counter))

        };

        for (Cell tabCell : contentTable) {
            hash.put("key " + counter, tabCell);
            if (counter % 2 == 0) {
                tabCell.setBackgroundColor(DeviceGray.WHITE);
            } else {
                tabCell.setBackgroundColor(new DeviceGray(0.75f));
            }

            content.addFooterCell(hash.get("key " + counter));
        }

    }
}

В этом случае ваш ключ будет создан динамически, иразные / связные для каждой вашей клетки.

0 голосов
/ 13 декабря 2018

Я сделал это.Но это будет работать для статического добавления данных в таблицу, используя LinkedHashMap.

    LinkedHashMap<String, String> hash = new LinkedHashMap<String, String>();

    // put values in hashmap
    hash.put("key1", "value1");
    hash.put("key2", "value2");
    hash.put("key3", "value3");

    Table table = new Table(UnitValue.createPercentArray(new float[]{5,5,5}));
    table.setWidth(UnitValue.createPercentValue(100));

    table.addCell(hash.get("key1"));
    table.addCell(hash.get("key2"));
    table.addCell(hash.get("key3"));

    Cell[] headerFooter = new Cell[] {
            new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph("#")),
            new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph("Key")),
            new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph("Value"))
    };
    for (Cell hfCell : headerFooter) {

        table.addHeaderCell(hfCell);

    }
    doc.add(table);
...