我在将数据写入Excel工作表时遇到问题.我程序的另一部分将生成一个对象的ArrayList并将其发送到此循环.此循环读取另一个对象并写入Excel工作表.
我知道我错过了什么.它只写入List中的最后一个对象.
如果我尝试将此代码放在while循环中:
FileOutputStream out = new FileOutputStream(writeExcel);
writeExtraBook.write(out);
out.close();
Run Code Online (Sandbox Code Playgroud)
然后它只将第一条记录写入文件.
任何人都可以在我做错的地方帮助我
这是写入数据的代码:
String writeExcel = CONSTANTS.FOW_FILE_PATH;
FileInputStream writeInput;
try {
writeInput = new FileInputStream(writeExcel);
/** Create a POIFSFileSystem object **/
POIFSFileSystem mywriteSystem = new POIFSFileSystem(writeInput);
HSSFWorkbook writeExtraBook = new HSSFWorkbook(mywriteSystem);
HSSFSheet myExtrasSheet = writeExtraBook.getSheet("FOW");
HSSFRow extraRow = null;
HSSFCell extraRowCell = null;
int lastRowNumber = myExtrasSheet.getLastRowNum();
Iterator<FoWForm> iter = fowList.iterator();
while (iter.hasNext()) {
extraRow = myExtrasSheet.createRow(lastRowNumber + 1);
FoWForm form = iter.next();
extraRowCell = extraRow.createCell(0);
extraRowCell.setCellValue(lastRowNumber + 1);
extraRowCell = extraRow.createCell(1);
extraRowCell.setCellValue(form.getFowDesc());
extraRowCell = extraRow.createCell(2);
extraRowCell.setCellValue(form.getForCountry());
extraRowCell = extraRow.createCell(3);
extraRowCell.setCellValue(form.getMatchId());
extraRowCell = extraRow.createCell(4);
extraRowCell.setCellValue(form.getAgainstCountry());
}
FileOutputStream out = new FileOutputStream(writeExcel);
writeExtraBook.write(out);
out.close();
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 22
我怀疑这是问题所在:
int lastRowNumber = myExtrasSheet.getLastRowNum();
...
while (iter.hasNext()) {
extraRow = myExtrasSheet.createRow(lastRowNumber + 1);
Run Code Online (Sandbox Code Playgroud)
您只评估lastRowNumber一次 - 所以在每次迭代时,您使用createRow相同的新行号进行调用,这可能会覆盖该行.
我怀疑你想要:
lastRowNumber++;
Run Code Online (Sandbox Code Playgroud)
循环内......
| 归档时间: |
|
| 查看次数: |
894 次 |
| 最近记录: |