下面这段代码,向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); // 写入文件
}