POI全称PoorObfuscation Implementation ,是Apache组件的一个开源项目,可以对微软的Office一系列办公软件进行读写操作。
下载jar
Apache POI发行版支持多种文档文件格式。这种支持在几个Jar文件中提供。并非每种格式都需要所有jar。可到下面的网址看详细的说明,看需求导入需要的jar包
使用之前导入jar包
使用POI组件创建Excel,主要使用的是org.apache.poi.hssf.usermodel.HSSFWorkbook类和org.apache.poi.hssf.usermodel.HSSFSheet类。HSSFWorkbook表示为Excel工作簿,是最为重要的类,获取HSSFWorkbook对象,再从HSSFWorkbook中获取工作表对象。
HSSFWorkbook类常用方法如下
createSheet():创建Excel工作表 返回类型为HSSFSheeet
setSheetName():设置Excel工作表的名称,语法结构如下
public void setSheetName(int sheetIx,String name)
参数sheetLx:指定需要修改名称的工作表的索引,索引是从0开始
参数 name:设置工作表的名称
setSelectTab():设置Excel文件中哪一个工作表为选择状态,语法如下
public void setSelectedTab(int index)参数 index 设置选择状态的工作表的索引(从0开始)
writer()方法:将缓存中创建的Excel文件对象以流的形式写入文件中
public void writer(OutputStream out)参数:stream 文件输出流的对象,将数据写入之前,需要创建此文件输出流的对象。
导出Excel:(为了方便演示,下面代码写在Servlet中的doGet方法中,数据也是手动添加的,如数据需要从数据库中取,可以向从数据库查询数据,返回List集合,遍历集合从而产生数据行,注意如果使用Map来存放数据,应使用LinkedHashMap来保证有序,使标题和数据对应)
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HSSFWorkbook wb = new HSSFWorkbook();//创建HSSFWorkbook对象 HSSFSheet sheet=wb.createSheet("成绩表");//建立sheet对象 HSSFRow row1=sheet.createRow(0); //在sheet里创建第一行,参数为行索引 HSSFCell cell=row1.createCell(0); //创建单元格 cell.setCellValue("学生成绩表"); //设置单元格内容 //合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列 sheet.addMergedRegion(new CellRangeAddress(0,0,0,3)); //在sheet里创建第二行 HSSFRow row2=sheet.createRow(1); //创建单元格并设置单元格内容 row2.createCell(0).setCellValue("姓名"); row2.createCell(1).setCellValue("班级"); row2.createCell(2).setCellValue("语文成绩"); row2.createCell(3).setCellValue("数学成绩"); row2.createCell(4).setCellValue("英语成绩"); //在sheet里创建第三行 HSSFRow row3=sheet.createRow(2); row3.createCell(0).setCellValue("小明"); row3.createCell(1).setCellValue("1班"); row3.createCell(2).setCellValue(80); row3.createCell(3).setCellValue(75); row3.createCell(4).setCellValue(88); HSSFRow row4=sheet.createRow(3); row4.createCell(0).setCellValue("小红"); row4.createCell(1).setCellValue("1班"); row4.createCell(2).setCellValue(82); row4.createCell(3).setCellValue(70); row4.createCell(4).setCellValue(90); //输出Excel文件 OutputStream output=response.getOutputStream(); response.reset(); //设置响应头, response.setHeader("Content-disposition", "attachment; filename=Student.xls"); response.setContentType("application/msexcel"); wb.write(output); output.close(); }
效果
设置样式,如字体、单元格等(详细的可以去看官方文档)
// 设置单元格的横向和纵向对齐方式, cellStyle.setAlignment(HSSFCellStyle.ALIGN_JUSTIFY); cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); //设置背景颜色 cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_YELLOW.index);
java使用POI导出Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。
前端:如果你使用的是ajax类型的跨域导出,则无法出现弹框,所以直接选择window.location.href,具体操作看代码 后端:上面的地址为图片中的地址,如图 @GetMapping(value = "/export") public void ...
前端:如果你使用的是ajax类型的跨域导出,则无法出现弹框,所以直接选择window.location.href,具体操作看代码
后端:上面的地址为图片中的地址,如图
@GetMapping(value = "/export") public void exportSysTest(HttpServletRequest request, HttpServletResponse response) { try { List