我们可以利用Apache的POI项目,帮助我们生成Excel,POI不仅能处理Excel,还可以处理word,PowerPoint等格式的文件 实现Excel在线导出
-
如何利用 POI 生成Excel首先在生成Excel前,我们需要理解一下Excel文件的组织形式。在POI中式这样理解的 :一个Excel对应workbook 一个workbook是由若干个sheet组成,一个sheet有多个row,一个row有多个列cell对于生成 Excel , POI 提供了如下几个基本对象HSSFWorkbook excel 的文档对象HSSFSheet excel 的一个 sheetHSSFRow excel 的行HSSFCell excel 的子单元格
- 环境搭建
-
导入 jar 包 , 加到当前项目的环境中
-
添加一个导出 Excel 的按钮,发起一个请求,发起请求只能是 form 表单,AJAX 不可以,因为返回给浏览器的是一个文件让浏览去下载, ajax 不支持这种返回值类型
<div style="float: right"> <form action="${pageContext.request.contextPath}/downexcel"> <input type="submit" value="报表导出"/> </form> </div> -
创建 servlet 接收请求
@WebServlet("/downexcel") public class DownExcelServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.创建一个流,将生成的excel对象返回给浏览器,让浏览器去下载ServletOutputStream out=resp.getOutputStream();//2.设置头文件,让浏览器去下载resp.setHeader("Content-Disposition","attachment;fileName=doorlist.xls");//3.预先设置表头String [] titles={"id","姓名","密码","性别","电话号","qq号"};//调用ExcelPOI类里面的方法帮助我们生成excelExcelPOI excelPOI=new ExcelPOI();excelPOI.export(titles,out);} } -
创建 ExcelPOI 工具类,定义方法,实现生成 Excel
public class ExcelPOI {//利用此方法生成servletpublic void export(String[] titles, ServletOutputStream out) {try {//1.创建一个workbook,对应一个excel文件HSSFWorkbook workbook = new HSSFWorkbook();//2.往workbook中添加sheet,对应sheetHSSFSheet hssfSheet = workbook.createSheet("sheet1");//3.在sheet中添加表头HSSFRow row = hssfSheet.createRow(0);//4.创建单元格,并设置表头居中HSSFCellStyle hssfCellStyle = workbook.createCellStyle();//居中样式hssfCellStyle.setAlignment(HorizontalAlignment.CENTER);HSSFCell hssfCell = null;for (int i = 0; i < titles.length; i++) {hssfCell = row.createCell(i);hssfCell.setCellValue(titles[i]);hssfCell.setCellStyle(hssfCellStyle);}UserDaoImpl users = new UserDaoImpl();List<Users> list = users.findAll();//调用查找所有的方法List list=user.getAll();for (int i = 0; i < list.size(); i++) {row = hssfSheet.createRow(i + 1);Users user = list.get(i);Integer id = null;if (user.getUserid() != 0) {id = user.getUserid();}row.createCell(0).setCellValue(id);String username = null;if (user.getUsername() != null) {username = user.getUsername();}row.createCell(1).setCellValue(username);String userpwd = null;if (user.getUserpwd() != null) {userpwd = user.getUserpwd();}row.createCell(2).setCellValue(userpwd);String usersex = null;if (user.getUsersex() != null) {usersex = user.getUsersex();}row.createCell(3).setCellValue(usersex);String phonenumber = null;if (user.getPhonenumber() != null) {phonenumber = user.getPhonenumber();}row.createCell(4).setCellValue(phonenumber);String qqnumber = null;if (user.getQqnumber() != null) {qqnumber = user.getQqnumber();}row.createCell(5).setCellValue(qqnumber);}//将文件输出到客户端浏览器workbook.write(out);out.flush();out.close();} catch (Exception e) {e.printStackTrace();}} }
-