Excel在写入时缺少一些值

时间:2012-02-11 04:05:04

标签: java apache-poi

我是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 个答案:

答案 0 :(得分:1)

似乎Add_value开始从顶部创建行。因此,在第二次调用时,将删除旧行。

替换

         row = sheet.createRow(count);

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