很多时候需要将数据利用浏览器进行导出,这个时候我们就可以采用Apache的POI进行实现通过web页面实现Excel导出后台数据,并且以.xlsx的形式下载到本地,也就是excel表格形式。

首先先下载POI的jar包,

链接:https://pan.baidu.com/s/1qynuHSmu15rGzbv2fey7PA
提取码:2pin
复制这段内容后打开百度网盘手机App,操作更方便哦

下载完成后在web项目里面加入到lib目录下,添加到项目环境中。

我们先分析一下excel表格,从而理解POI的操作流程。

根据excel的特性,我们通过POI生成表格时也是采用这一流程。先建立excel--建立sheet--根据需求建立行row--根据需求建立列cell。

所对应的关键字分别是HSSFWorkbook--HSSFSheet--HSSFRow--HSSFCell。

了解了以后后台代码就十分简单了。直接上干货。

public void exportExcel(String[] titles, ServletOutputStream out) throws IOException, SQLException {//创建一个excel文件HSSFWorkbook hssfWorkbook = new HSSFWorkbook();//HSSFWorkbook中添加sheetHSSFSheet hssfSheet = hssfWorkbook.createSheet("sheet_01");//在sheet中添加表头HSSFRow hssfRow_00 = hssfSheet.createRow(0);//设置单元格样式  居中HSSFCellStyle hssfCellStyle = hssfWorkbook.createCellStyle();hssfCellStyle.setAlignment(HorizontalAlignment.CENTER);//创建单元格HSSFCell hssfCell = null;for (int i = 0; i < titles.length; i++) {hssfCell = hssfRow_00.createCell(i);hssfCell.setCellValue(titles[i]);hssfCell.setCellStyle(hssfCellStyle);}Student student = new Student();List<Student> list = Student.findAll();for (int i = 0; i < list.size(); i++) {//从第二行进行数据添加hssfRow_00 = hssfSheet.createRow(i + 1);Student student = list.get(i);Integer id = 0;if (student .getId() != 0) {id = student .getId();}//给第一列添加数据hssfRow_00.createCell(0).setCellValue(id);String name="";if (student .getName() != null) {name = student .getName();}//给第二列添加数据hssfRow_00.createCell(1).setCellValue(name);
//可以根据自己的需求适当添加列}//将文件写出System.out.println("开始写出");hssfWorkbook.write(out);out.flush();out.close();
}

以下是调用方法

@WebServlet("/downExcel")
public class DownExcelServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//创建一个流 将生成的excel发回给浏览器  让浏览器下载ServletOutputStream servletOut=response.getOutputStream();//设置头文件 让浏览器下载//Content-Type的作用:该实体头的作用是让服务器告诉浏览器它发送的数据属于什么文件类型。//Content-Disposition 的作用:当Content-Type 的类型为要下载的类型时 , 这个信息头会告诉浏览器这个文件的名字和类型response.setHeader("Content-Disposition","attachment;fileName=StudentList.xls");//预先设置表头String [] titles={"编号","学生姓名"};//利用POI生成Excel  调用ExcelPOI(自定义方法)ExcelPOI excelPOI=new ExcelPOI();try {excelPOI.exportExcel(titles,servletOut);} catch (SQLException e) {e.printStackTrace();}}
}

前端代码如下:

<div style="float: right">
    <form action="${pageContext.request.contextPath}/downExcel">
        <input type="submit" value="报表导出">
    </form>
</div>

关于为什么使用的时form表单请求,而不是ajax,因为我们返回的是一个文件让浏览器进行下载,Ajax并不支持这种返回类型。

结果如下:

利用POI生成EXCEL报表(通过web页面导出后台数据)相关推荐

  1. 利用owc生成excel并且显示在页面

    主要利用OWC生成Excel,画表头和显示从数据库读出来的数据,然后显示在前台页面上,无需客户端安装office,只需要安装owc.一年以前写的,似乎很烦锁,哪位有高见请指教! 后面利用OWC操作EX ...

  2. Java利用POI生成Excel强制换行

    前一段时间在做一个学校排课系统时,有一个地方需要利用把课程表生成excel汇出给客户,由于之前用excel都只是简单的应用,在单元格里都是用自动换行,而这次可能需要用到手动强制换行.  于是我在网上找 ...

  3. 利用poi生成excel考勤表

    今天利用了Apache poi 编写了一个生成excel的考勤表,Apache poi链接地址为http://poi.apache.org/,代码如下: package com.pom;import ...

  4. java poi 换行_Java利用POI生成Excel强制换行

    前一段时间在做一个学校排课系统时,有一个地方需要利用把课程表生成excel汇出给客户,由于之前用excel都只是简单的应用,在单元格里都是用自动换行,而这次可能需要用到手动强制换行. 于是我在网上找了 ...

  5. java poi 生成excel_利用POI生成EXCEL文件的方法实例

    一.背景 Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API.用它可以使用Java读取和创建,修 ...

  6. JAVA怎么才能强制换行_Java利用POI生成Excel强制换行(转载)

    使用POI创建一个简单的 myXls.xls 文件 常用的包为 org.apache.poi.hssf.usermodel.*; 例子: import java.io.*; import org.ap ...

  7. java利用poi生成excel如何自动换行

    1.首先设置单元格内容自动换行 // 生成一个样式,用于设置内容样式 HSSFWorkbook workbook = new HSSFWorkbook(); HSSFCellStyle cellSty ...

  8. 性能碾压 POI !利用模板语法快速生成 Excel 报表

    本期讲师:刘鹏 GcExcel项目组,核心开发者 Hello,大家好,本期葡萄城技术公开课,将由我来为大家带来<性能碾压 POI !利用模板语法快速生成 Excel 报表>的技术分享. 本 ...

  9. java后台处理excel_java后台利用Apache poi 生成excel文档提供前台下载示例

    之前在项目中会用到在java在后台把数据填入Word文档的模板来提供前台下载,为了自己能随时查看当时的实现方案及方便他人学习我写了这篇博客,访问量已经是我写的博客里第一了.于是乎我在学会用Java在后 ...

最新文章

  1. linux跨主机复制文件
  2. php屏蔽审查元素,前端:屏蔽F12审查元素,禁止修改页面代码
  3. 如何在Oracle11中配置st_shapelib
  4. Docker教程-使用
  5. ES6模块之export和import详解
  6. python功能模块之psutil_1.python系统性能信息模块之psutil模块
  7. 瑞幸咖啡首席技术官也离职了:并未参加公司财务造假
  8. jquery相对定位(包含find的使用 find相当于后代选择器)$(选择器1,选择器2)
  9. 《从零开始学习jQuery》及《jQuery风暴》学习笔记
  10. C++ 檔案、資料夾、路徑處理函式庫:boost::filesystem
  11. Spark MLlib(一)正则化特征
  12. 数据结构与算法基本概念
  13. 序列化和反序列化 加上json数据流转换
  14. 在大学城开一间宾馆能挣多少钱?
  15. ENSPAC的web配置直接转发
  16. 开源一个win10二十四节气壁纸自动更换的程序
  17. 苹果电脑可以装windows系统吗_Linux系统安装Windows软件? 通过这个工具可以做到...
  18. PINO——一个开放的机器人项目
  19. leetcode 滑动窗口1
  20. 写技术文档需要注意什么

热门文章

  1. 12306购票抓包分析以及任务分解
  2. 华为天才少年自制百大Up奖杯,网友:技术难度不高,侮辱性极强
  3. 南昌二中2021届高考成绩查询,2021年江西高考主要科目考试结束 6月23日公布成绩...
  4. Python找寻知乎最美最帅之人!我才是最帅的那个呀~
  5. 【实验日志】计算机串口使用与测量5
  6. 未来十年,有哪些职业会消失...Python人工智能也会被替代吗
  7. MATLAB 怎样将文本复制到剪切板
  8. 台式计算机电池能充电吗,笔记本电脑能一直插着电源充电吗?为什么?
  9. android布局之设置下划线
  10. 以 Animated Drawings APP 为例,用 TorchServe 进行模型调优