JAVA报表开发-POI处理EXCEL-导出(简单样式)
1、实现用户数据的导出
一、需求
我们先来一个简单的excel的导出,不要求有什么样式。就是和jxl导出的内容一样就可以
二、基本思路
1、创建一个全新的工作薄
2、在新的工作薄中创建一个新的工作表
3、在工作表创建第一行作为标题行,标题固定
4、从第二行循环遍历创建,有多少条用户数据就应该创建多少行
5、把每一个user对象的属性放入到相应的单元格中
三、代码实现
public void downLoadXlsx(HttpServletResponse response) throws Exception { /** * 1、 创建一个全新的工作薄 * 2、 创建全新的工作表 * 3、 处理固定的标题 编号 姓名 手机号 入职日期 现住址 * 4、 从第二行开始循环遍历 向单元格中放入数据 */ //1、创建一个全新的工作薄 Workbook workbook = new XSSFWorkbook(); //2、创建全新的工作表 Sheet sheet = workbook.createSheet("用户数据"); //设置列宽 sheet.setColumnWidth(0,5*256); //1代表的是一个标准字母宽度的256分之一 sheet.setColumnWidth(1,8*256); sheet.setColumnWidth(2,15*256); sheet.setColumnWidth(3,15*256); sheet.setColumnWidth(4,30*256); //3、处理固定的标题 编号 姓名 手机号 入职日期 现住址 String [] titles = new String[]{"编号","姓名","手机号","入职日期","现住址","所在城市"}; Row tittleRow = sheet.createRow(0); //创建第一行 Cell cell = null; for (int i = 0; i < 6; i++) { cell=tittleRow.createCell(i);//创建单元格 列 cell.setCellValue(titles[i]);//写入内容 } SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd"); List<User> userList = userMapper.selectAll(); int rowIndex=1; for (User user : userList) { Row row = sheet.createRow(rowIndex); //创建行 cell = row.createCell(0); //创建列 cell.setCellValue(user.getId()); cell = row.createCell(1); cell.setCellValue(user.getUserName()); cell = row.createCell(2); cell.setCellValue(user.getPhone()); cell = row.createCell(3); cell.setCellValue(simpleDateFormat.format(user.getHireDate())); cell = row.createCell(4); cell.setCellValue(user.getAddress()); cell = row.createCell(5); cell.setCellValue(user.getCity()); rowIndex++; } //文件导出 一个流(outputStream)两个头(文件的打开方式 in-line attachement, 文件的下载时mime类型) String filename="员工数据.xlsx"; response.setHeader("content-disposition","attachment;filename="+new String(filename.getBytes(),"ISO8859-1")); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); workbook.write(response.getOutputStream()); }