poi导出excel

来源:互联网 发布:java微信企业号支付 编辑:程序博客网 时间:2024/06/09 22:50

这是我工作中遇到的一个项目,需要导出excel,我是做成接口的形式,然后让前端调用,导出页面的table,直接上代码吧!


@RequestMapping(value = "/teamListExportExcel", method = RequestMethod.POST)

public ResponseBean<String> teamListExportExcel(@RequestBody String json, HttpServletResponse r)
throws IOException, NoSuchFieldException, IllegalAccessException {

//格式化日期
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

//这里是poi的一些属性,大家上网就可以找到
HSSFWorkbook wb = new HSSFWorkbook();

//在这设置导出去的excel表格名称
HSSFSheet sheet = wb.createSheet("团队管理表");

//这里都是poi的一些属性,就不多说了
HSSFRow row = sheet.createRow(0);
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

//这里是设置导出去表格的表头
row.createCell(0).setCellValue("团队名称");
row.createCell(1).setCellValue("创建时间");
row.createCell(2).setCellValue("等级");
row.createCell(3).setCellValue("成长值");
row.createCell(4).setCellValue("人数");
row.createCell(5).setCellValue("团长");
row.createCell(6).setCellValue("状态");

//在这进行一次查询,如果前端有条件,把条件接收传进去就可以了,和前端查询出来结果是一样的
List<TeamVo> list = teamService.queryTeam();

//循环查询出来的list
for (int i = 0; i < list.size(); i++) {

//这个必不可少,因为查询出来多条数据,每循环一次就往下换一行
row = sheet.createRow((int) i + 1);

//判断一下list是否为空
if (list.get(i) != null) {

//不为空就设置表格的值,用get取值
row.createCell(0).setCellValue(list.get(i).getTeamName());
row.createCell(1).setCellValue(sf.format(list.get(i).getCreateTime()));
row.createCell(2).setCellValue(list.get(i).getTeamLevel());
row.createCell(3).setCellValue(list.get(i).getExp());
row.createCell(4).setCellValue(list.get(i).getMemberCount());
row.createCell(5).setCellValue(list.get(i).getOwnerNickname());

//在这判断了一下,因为存储的数据使用A和N代替,所以在这判断
if(list.get(i).getSts().equals("A")){
row.createCell(6).setCellValue("正常");
}else{
row.createCell(6).setCellValue("等待审核");
}

}
}

//这里写好导出的路径就可以了
try {
FileOutputStream fout = new FileOutputStream("D:/students.xls");
wb.write(fout);
fout.close();
} catch (Exception e) {
e.printStackTrace();
}

}


我是新人,工作时间也不长,想把我做项目中遇到的与大家分享,也请大神看到不完善的地方多多指教

0 0
原创粉丝点击