apach poi输入 excel数据异常

下面这段代码,向excel中写数据,但是,写完之后 ,excel里面并没有数据,但是我输出 要输入 的数据 list<list> namedd30,是能看到数据,是怎么回事?


     for(int i = 0; i<namedd30.size();i++){
            List<String> name = namedd30.get(i);
            for(int j = 0; j <name.size(); j++){
                Row row =sheet30.getRow(i+1);
                if( row ==null){
                    row=sheet30.createRow(i+1);
                }
                Cell cell = row.getCell(j);

                if (cell==null){
                    cell = row.createCell(j);
                }
                cell.setCellValue(name.get(j));
                System.out.print(name.get(j)+"  ");
            }
            System.out.println();
        }

从代码看,主要有两点可能造成Excel没有数据:
1. sheet30对象获取有问题,实际上并没有获取到工作表。可以在获取sheet30对象前打印workbook.getSheetName()来确认工作表名是否正确。
2. Cell值设置后,没有及时写入文件。需要在设置Cell值后调用workbook.write()方法将内容写入文件:
java
for(int i = 0; i<namedd30.size();i++){ 
    // ...
    workbook.write(out);  // 写入文件
}
修改后的代码如下:
java
Workbook workbook = WorkbookFactory.create(file);
Sheet sheet30 = workbook.getSheet("Sheet30"); 
System.out.println(workbook.getSheetName(0));  // 确认Sheet名

for(int i = 0; i<namedd30.size();i++){
    List<String> name = namedd30.get(i);
    for(int j = 0; j <name.size(); j++){
        Row row =sheet30.getRow(i+1);
        if( row ==null){
            row=sheet30.createRow(i+1);
        }
        Cell cell = row.getCell(j);  
        if (cell==null){
            cell = row.createCell(j);
        }
        cell.setCellValue(name.get(j));  
    }
    workbook.write(out);  // 写入文件 
}