ser*_*kan 1 java excel dao apache-poi
我用Apache POI创建了Excel文件.
在我的数据库中,我有一个400人的列表.我想将他们的姓名和姓氏写入该Excel文件.
这是我的代码示例:
try {
FileOutputStream fileOut = new FileOutputStream("C:/testExcelForJava/test.xls");
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet worksheet = workbook.createSheet("POI Worksheet");
// index from 0,0... cell A1 is cell(0,0)
HSSFRow row1 = worksheet.createRow((short) 0);
HSSFCell cellA1 = row1.createCell((short) 0);
cellA1.setCellValue("Ad");
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFillForegroundColor(HSSFColor.GOLD.index);
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
cellA1.setCellStyle(cellStyle);
HSSFCell cellB1 = row1.createCell((short) 1);
cellB1.setCellValue("Soyad");
cellStyle = workbook.createCellStyle();
cellStyle.setFillForegroundColor(HSSFColor.GOLD.index);
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
cellB1.setCellStyle(cellStyle);
List<Driver> driverList = Dao.driverDao.queryForAll();
for(Driver driver :driverList){
String name = driver.getName();
String surname = driver.getSurname();
String birthDay = driver.getBirthDay();
cellA1.setCellValue(name);
cellB1.setCellValue(surname);
}
workbook.write(fileOut);
fileOut.flush();
fileOut.close();
} catch(FileNotFoundException e){
e.printStackTrace();
log.error(e.getMessage());
} catch(IOException e){
e.printStackTrace();
log.error(e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
当我查看我的Excel文件时,我只看到列表的最后一个人.
我怎样才能写出我所有人的信息?
谢谢
如果不完全阅读代码,似乎你在覆盖循环中的单元格A1和B1的值:
for(Driver driver :driverList){
String name = driver.getName();
String surname = driver.getSurname();
String birthDay = driver.getBirthDay();
cellA1.setCellValue(name); //the same cell as before!!!
cellB1.setCellValue(surname); //the same cell as before!!!
}
Run Code Online (Sandbox Code Playgroud)
我假设您也想要更改循环中的单元格,例如,将所有行和单元格创建代码放入循环中,并在每次迭代中推进行索引.