Как отправить два разных размера списков в Excel, используя Java - PullRequest
0 голосов
/ 01 июня 2018

Рабочая книга HSSFWorkbook = новая книга HSSFWorkbook ();HSSFSheet sheet = workbook.createSheet ("Demo_Sheet");

        // Creating Row Heading
        HSSFRow rowheading=sheet.createRow(0);

        rowheading.createCell(0).setCellValue("INNER CLASS");
        rowheading.createCell(1).setCellValue("INNER METHOD");

        for(int i=0;i<2;i++){
            HSSFCellStyle cellheaderstyle = workbook.createCellStyle();
            HSSFFont font = workbook.createFont();
            font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            font.setFontName(HSSFFont.FONT_ARIAL);
            font.setFontHeightInPoints((short)11);
            cellheaderstyle.setFont(font);
            cellheaderstyle.setVerticalAlignment(CellStyle.ALIGN_CENTER);
            rowheading.getCell(i).setCellStyle(cellheaderstyle);

        }
        List<String> list1=DemoOnInnerMethod2.getInnerClasses();
        List<String> list2 = DemoOnInnerMethod2.getInnerMethods();

        for(int j=0;j<list1.size();j++)
        {
            Row row = sheet.createRow(j+1);
            row.createCell(0).setCellValue(list1.get(j));
            row.createCell(1).setCellValue(list2.get(j));

        }FileOutputStream fout = new FileOutputStream(new File("/home/dilipp/Desktop/abcd.xls"));
        workbook.write(fout);
        fout.close();
        System.out.println("Success");

В вышеприведенном коде есть два списка list1 и list2 с разными размерами. List1 содержит 4 элемента, а list2 содержит 5 элементов. Но в листе Excel Iполучал только 4 элемента для list1 и list2. Но мне нужен 1-й столбец excel - list1 с 4 элементами и 2-й столбец с list2 из 5 элементов.Пожалуйста, предложите преодолеть эту проблему.

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Просто добавьте еще один цикл

for(int j=0;j<list1.size();j++)
{
    Row row = sheet.createRow(j+1);
    row.createCell(0).setCellValue(list1.get(j));

}


for(int j=0;j<list2.size();j++)
{
    Row row = null;
    (j >= list1.size()) {
        row = sheet.createRow(j+1);
    }else {
        row = sheet.getRow(j+1);
    }
    row.createCell(1).setCellValue(list2.get(j));

}

Возможно, получателя не будет, список 2 всегда фиксируется с одним значением, превышающим список 1, поэтому используется список: P

Hopeэто помогает:)

0 голосов
/ 01 июня 2018

После выхода из цикла для создайте новую строку и добавьте 5-й элемент из list2 во второй столбец

for(int j=0;j<list1.size();j++)
{
    Row row = sheet.createRow(j+1);
    row.createCell(0).setCellValue(list1.get(j));
    row.createCell(1).setCellValue(list2.get(j));
}
sheet.createRow(j+1);
row.createCell(1).setCellValue(list2.get(j));

Если вы хотите сделать это внутризацикливание, зацикливание большего списка, но добавление условия

for(int j=0;j<list2.size();j++)
{
    Row row = sheet.createRow(j+1);
    if (j < list1.size()) {
        row.createCell(0).setCellValue(list1.get(j));
    }
    row.createCell(1).setCellValue(list2.get(j));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...