Excel не хватает некоторых значений при записи - PullRequest
1 голос
/ 11 февраля 2012

Я новичок в Apache-poi и использую 3.8 версию poi.При записи значения в Excel, я проверяю имена столбцов, если они совпадают, я напишу некоторое значение в этом столбце и закончу его, и снова я начну писать в заголовке.Проблема заключается в том, что при записи трех значений столбца добавляются или сохраняются только последние значения столбца, а первые два значения не сохраняются в столбце.Может кто-нибудь сказать, что пошло не так.(извините, в случае ошибки)

 Code:
            int i = 0;
        Row row = sheet.createRow(i);
        CellStyle cellStyle = workbook.createCellStyle();
        cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_ORANGE.index);
        String validate_header = null;
        while (iterator.hasNext()) {
            if (eiterator.hasNext()) {
                validate_header = eiterator.next();
            }
            Cell cell = row.createCell(i);
            String col_heading = iterator.next();
            cell.setCellValue(col_heading);
            if(col_heading.equalsIgnoreCase("Assigned Date"))
            {
                Add_value(i, col_heading, row, sheet);
                row=sheet.getRow(0);
                cell=row.getCell(i);
            }
            else if(col_heading.startsWith("Review"))
            {
                int count=-1;
                int n=Col_values.get("Defect Summary").size();
                for (int j = 0; j < n; j++) {
                            row = sheet.createRow(count);
                    cell = row.createCell(i);
                    String s="External QC Defect ";     
                    cell.setCellValue(s);
                    count++;

                }
                row=sheet.getRow(0);
                cell=row.getCell(i);

            }

            sheet.autoSizeColumn(i);
            i++;

        }

private static Sheet Add_value(int k,String name,Row row, Sheet sheet) {

        System.out.println("Inside the add method");


        if(name.equalsIgnoreCase("Assigned Date")||name.equalsIgnoreCase("Reported Date") )
        {
        vector = Col_values.get("TargetDate");
        int count = 1;

        System.out.println("IF Size of the vector  " + vector.size());
        for (int j = 0; j < vector.size(); j++) {

            row = sheet.createRow(count);
            cell = row.createCell(k);
            String s = (String) vector.get(j);
            System.out.println(s);
            cell.setCellValue(s);
            count++;

        }
        }
        else
        {
        vector = Col_values.get("Defect Summary");
            int count = 1;
    System.out.println("ELSE Size of the vector  " + vector.size());
        for (int j = 0; j < vector.size(); j++) {

            row = sheet.createRow(count);
            cell = row.createCell(k);
            String s = (String) vector.get(j);
            System.out.println(s);
            cell.setCellValue(s);
            count++;
        }
        }
        return sheet;

    }

'

Можете ли вы сказать, что пошло не так?

1 Ответ

1 голос
/ 11 февраля 2012

Кажется, что Add_value начинает создавать строки сверху. Поэтому при втором вызове старые строки удаляются.

Заменить

         row = sheet.createRow(count);

с

         row = k == 0 ? sheet.createRow(count) : sheet.getRow(count);
...