ArrayList и itextpdf, таблица

#java #list #arraylist #jxl #itextpdf

#java #Список #arraylist #jxl #itextpdf

Вопрос:

У меня есть таблица с 30 строками и список массивов, полный строк.В таблице 2 столбца, в первом — название компании, во втором мне нужно записать строки из списка, каждая строка этого второго столбца должна содержать 10 элементов, как мне это сделать?

Вывод PDF должен быть примерно таким :

 Company name |||| DESTINATION      
AirFrance |||| Tokio,London,Istanbul,New Nork,Paris,Vienna,OSLO,Belgrade,Budapest,Amsterdam.
  

Каждая компания должна прочитать 10 пунктов назначения из списка.

Вероятно, это что-то простое, чего я просто не вижу, я пытался подсчитать элементы списка и каким-то образом разделить его, но это не сработало.

Кстати, я использую библиотеку itextpdf и считываю эти данные из Excel.

Вот код :

 public class ReadExcel {
    private String inputfile;
    private List<Avio> avioni;

    public ReadExcel() {

        this.avioni = new ArrayList<Avio>();
    }


public List<Avio> getAvioni() {
    return avioni;
}

public void setAvioni(List<Avio> avioni) {
    this.avioni = avioni;
}

public String getInputfile() {
    return inputfile;
}

public void setInputfile(String inputfile) {
    this.inputfile = inputfile;
}

public void citaj(String naziv) {
    Avio a = new Avio();

    try {
        Workbook w = Workbook.getWorkbook(new File(naziv));
        Sheet sheet = w.getSheet(0);
        // System.out.println(sheet.getRows());
        for (int i = 1; i < sheet.getRows(); i  ) {
            Avio tmpAvio = new Avio();

            tmpAvio.setDrzava(sheet.getCell(0, i).getContents());
            System.out.println();
            tmpAvio.setNazivKomp(sheet.getCell(1, i).getContents());
            tmpAvio.setVlasnik(sheet.getCell(2, i).getContents());
            tmpAvio.setBrAviona(Integer.parseInt(sheet.getCell(3, i)
                    .getContents()));
            tmpAvio.setGod(Integer.parseInt(sheet.getCell(4, i)
                    .getContents()));

            tmpAvio.setDatum(sheet.getCell(6,i).getContents());
            tmpAvio.setModelAviona(sheet.getCell(7,i).getContents());
            tmpAvio.setKapetan(sheet.getCell(8,i).getContents());
            tmpAvio.setJMBG(sheet.getCell(9,i).getContents());
            tmpAvio.setIskustvo(sheet.getCell(10,i).getContents());
            tmpAvio.setBrPutnika(sheet.getCell(11,i).getContents());
            tmpAvio.setLet(sheet.getCell(12,i).getContents());

            avioni.add(tmpAvio);


        }

        Sheet sheet1 = w.getSheet(1);

        List<String> destinacije = new ArrayList<String>();
        for (int i = 0; i < sheet1.getRows(); i  ) {
            for (int j = 0; j < sheet1.getColumns(); j  ) {

                destinacije.add(sheet1.getCell(j, i).getContents());
                System.out.println(sheet1.getCell(j,i).getContents() i "," j);
            }
            avioni.get(i).setDestinacije(destinacije);
            System.out.println(avioni.get(i));
        }


    }

    catch (BiffException e1) {

        e1.printStackTrace();
    } catch (IOException e) {

        e.printStackTrace();
    }


}

public void kreirajPDF(String naziv) {

    Document d = new Document();
    try {
        PdfWriter.getInstance(d, new FileOutputStream(new File(naziv)));
        d.open();

        File fontFile = new File("swansea.ttf");
        BaseFont unicode = BaseFont.createFont(fontFile.getAbsolutePath(),
                BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

        Font titleFont = new Font(unicode, 16, Font.BOLD);
        titleFont.setColor(BaseColor.WHITE);
        Font textFont = new Font(unicode, 11, Font.NORMAL);
        Font headerFont = new Font(unicode, 14, Font.BOLD);

        Paragraph p1 = new Paragraph("Evropske Avio Kompanije", titleFont);
        p1.setAlignment(com.itextpdf.text.Element.ALIGN_CENTER);
        Image img = Image.getInstance("lufthansa2.jpg");
        img.setAlignment(Image.MIDDLE |Image.TEXTWRAP);
        p1.add(img);
        d.add(p1);
        //d.add(new Paragraph("DESTINACIJE"));


        Paragraph p2 = new Paragraph("Destinacije", titleFont);
        p2.setAlignment(com.itextpdf.text.Element.ALIGN_CENTER);            
        d.add(p2);
        d.add(new Paragraph(" "));

        Paragraph p3 = new Paragraph("Piloti", titleFont);
        p3.setAlignment(com.itextpdf.text.Element.ALIGN_CENTER);            
        d.add(p3);

        kreiranjeTabele(d, textFont, headerFont, "Pilot");
        d.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (DocumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

private void kreiranjeTabele(Document d, Font textFont, Font headerFont,
        String smjer) throws DocumentException {
    PdfPTable table = new PdfPTable(5);

    PdfPCell c1 = new PdfPCell(new Phrase("Drzava", headerFont));
    table.addCell(c1);

    PdfPCell c2 = new PdfPCell(new Phrase("Kompanija", headerFont));
    table.addCell(c2);

    PdfPCell c3 = new PdfPCell(new Phrase("Vlasnik", headerFont));
    table.addCell(c3);

    PdfPCell c4 = new PdfPCell(new Phrase("Broj Aviona", headerFont));
    table.addCell(c4);

    PdfPCell c5 = new PdfPCell(new Phrase("Godina", headerFont));
    table.addCell(c5);

    for (Avio s : avioni) {
        table.setWidthPercentage(110);

        // Paragraph p1 = new Paragraph(s.toString(),
        // textFont);Integer.toString(i)
        table.addCell(new Phrase(s.getDrzava(), textFont));
        table.addCell(new Phrase(s.getNazivKomp(), textFont));
        table.addCell(new Phrase(s.getVlasnik(), textFont));
        table.addCell(new Phrase(Integer.toString(s.getBrAviona()),
                textFont));
        table.addCell(new Phrase(Integer.toString(s.getGod()), textFont));

    }




    PdfPTable table1 = new PdfPTable(5);
    PdfPCell c11 = new PdfPCell(new Phrase("Kompanija", headerFont));
    table1.addCell(c11);

    PdfPCell c22 = new PdfPCell(new Phrase("Avion", headerFont));
    table1.addCell(c22);

    PdfPCell c33 = new PdfPCell(new Phrase("Datum", headerFont));
    table1.addCell(c33);

    PdfPCell c44 = new PdfPCell(new Phrase("Destinacija", headerFont));
    table1.addCell(c44);

    PdfPCell c55 = new PdfPCell(new Phrase("Trajanje leta", headerFont));
    table1.addCell(c55);
    for (Avio s1 : avioni) {
        table1.setWidthPercentage(110);
        table1.addCell(new Phrase(s1.getNazivKomp(), textFont));
        table1.addCell(new Phrase(s1.getModelAviona(), textFont));
        table1.addCell(new Phrase(s1.getDatum(), textFont));

    //  table1.addCell(new Phrase(s1.getDestinacije(), textFont));
        table1.addCell(new Phrase(s1.getLet(), textFont));

    }
    PdfPTable table2 = new PdfPTable(5);
    PdfPCell c111 = new PdfPCell(new Phrase("Pilot", headerFont));
    table2.addCell(c111);

    PdfPCell c222 = new PdfPCell(new Phrase("Drzava", headerFont));
    table2.addCell(c222);

    PdfPCell c333 = new PdfPCell(new Phrase("JMBG", headerFont));
    table2.addCell(c333);

    PdfPCell c444 = new PdfPCell(new Phrase("Iskustvo", headerFont));
    table2.addCell(c444);

    PdfPCell c555 = new PdfPCell(new Phrase("Avion", headerFont));
    table2.addCell(c555);
    for (Avio s2 : avioni) {
        table2.setWidthPercentage(110);
        table2.addCell(new Phrase(s2.getKapetan(), textFont));
        table2.addCell(new Phrase(s2.getDrzava(), textFont));
        table2.addCell(new Phrase(s2.getJMBG(), textFont));
        table2.addCell(new Phrase(s2.getIskustvo(), textFont));
        table2.addCell(new Phrase(s2.getModelAviona(), textFont));

    }

    d.add(table);
    d.newPage();        
    d.add(table1);
    d.newPage();        
    d.add(table2);
}
  

Надеюсь, кто-нибудь может помочь. Заранее спасибо.

Комментарии:

1. я опубликовал код… Это не на английском языке… Но в таблице PdfPTable table1 есть проблема с назначениями.

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

3. Вопрос все еще не ясен. Почему это вопрос iText? Если я правильно понимаю, это вопрос 101 программиста. Если только нет какой-то скрытой проблемы, которая не упоминается.

4. Поскольку вывод должен быть таблицей PDF, никаких других проблем, кроме этого, если вы видели выше, как должен выглядеть вывод… У меня около 30 компаний и столбец Destinacije, который пуст и должен быть заполнен строками из списка, и для каждой компании мне нужно 10 строк (10 пунктов назначения).

5. «если вы видели выше, как должен выглядеть вывод». Может быть, в этом и проблема: это ни на что не похоже. Вам нужно перефразировать свой вопрос. В его текущем состоянии я сомневаюсь, что кто-либо, кроме вас, понимает, о чем вы спрашиваете. Я, например, понятия не имею. Мне все еще интересно: в чем вопрос?