针对写了头信息之后,使用for循环遍历会导致数据丢失问题的优化,使用迭代器替代for循环,具体如下:
public static boolean ExportDeptLeaderFileToLocal(List<Manger> lsManger) {
String[] titlie = { "姓名", "联系方式", "是否在岗" };
// 创建Excel工作簿
HSSFWorkbook workBook = new HSSFWorkbook();
// 创建一个Sheet页
HSSFSheet sheet = workBook.createSheet();
// 设置表格默认列宽度为15个字节
sheet.setDefaultColumnWidth((short) 15);
// 创建第一行
HSSFRow row = sheet.createRow(0);
// 定义单元格
HSSFCell cell = null;
// 插入第一行数据id,name,sex
for (int i = 0; i < titlie.length; i++) {
cell = row.createCell(i);
cell.setCellValue(titlie[i]);
}
// 遍历集合数据,产生数据行
Iterator<Manger> it = lsManger.iterator();
int index = 0;
Manger manger=null;
// 追加数据
while(it.hasNext()) {
index++;
// 创建行,每循环一次就创建一行
HSSFRow nextrow = sheet.createRow(index);
manger = it.next();
// 创建第一行的第一列,并填入数据
HSSFCell cell2 = nextrow.createCell(0);
cell2.setCellValue(manger.getMangerName());
// 创建第一行的第二列,并填入数据
cell2 = nextrow.createCell(1);
cell2.setCellValue(manger.getMangerMobile());
// 创建第一行的第三列,并填入数据
cell2 = nextrow.createCell(2);
cell2.setCellValue(manger.getIsDel());
}
// 创建一个文件
File file = new File("C:/Users/Administrator/Downloads/DeptLeader_List.xls");
try {
file.createNewFile();
FileOutputStream stream = FileUtils.openOutputStream(file);
workBook.write(stream);
stream.close();
workBook.close();
System.out.println(">>>文件已导出,路径为:C:\\Users\\Administrator\\Downloads\\DeptLeader_List.xls;导出结束!");
return true;
} catch (Exception e) {
e.printStackTrace();
System.out.println("部门leader列表导出失败!");
}
return false;
}
end.