POI方式实现Excel表格数据导出
Excel表格导出
1.添加pom依赖
1 <!-- office 操作工具 -->
2 <dependency>
3 <groupId>org.apache.poi</groupId>
4 <artifactId>poi</artifactId>
5 <version>3.17</version>
6 </dependency>
7 <dependency>
8 <groupId>org.apache.poi</groupId>
9 <artifactId>poi-ooxml</artifactId>
10 <version>3.17</version>
11 </dependency>
12
13 <dependency>
14 <groupId>org.apache.poi</groupId>
15 <artifactId>poi-scratchpad</artifactId>
16 <version>3.17</version>
17 </dependency>
2.编写导出Excel的工具类
1 public class MyExcelUtils {
2 /**
3 * @param titles 表头
4 * @param out
5 * @param listMap 数据
6 * @param keys 数据库字段(与表头相对应)
7 */
8 public static void export(String[] titles, ServletOutputStream out, List<Map<String, Object>> listMap, String[] keys) {
9 try {
10 //1.创建一个workbook,对应一个Excel文件
11 HSSFWorkbook workbook = new HSSFWorkbook();
12 //2.在workbook中添加一个sheet,对应Excel文件中的sheet
13 HSSFSheet hssfSheet = workbook.createSheet("列表1");
14 //3.在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
15 HSSFRow row = hssfSheet.createRow(0);
16 //4.创建单元格 设置表单 居中
17 HSSFCellStyle hssfCellStyle = workbook.createCellStyle();
18 HSSFCell hssfCell = null;
19 for (int i = 0; i < titles.length; i++) {
20 hssfCell = row.createCell(i);//列索引从0开始
21 hssfCell.setCellValue(titles[i]);//列名1
22 hssfCell.setCellStyle(hssfCellStyle);//列居中显示
23 }
24 //5.填充数据
25 for (int i = 0; i < listMap.size(); i++) { //行数
26 row = hssfSheet.createRow(i + 1); // 表数据的起始行数为 1
27 //数据库数据
28 Map<String, Object> map = listMap.get(i);
29 for (int j = 0; j < titles.length; j++) { //列数
30 row.createCell(j).setCellValue((String) map.get(keys[j]));
31 }
32 }
33 // 6.将文件输出到客户端浏览器
34 try {
35 workbook.write(out);
36 out.flush();
37 out.close();
38 } catch (Exception e) {
39 e.printStackTrace();
40 }
41 } catch (Exception e) {
42 e.printStackTrace();
43 }
44 }
45 }
3.后端Controller实现(Controller参数: HttpServletResponse response)
为保证Excel表格的表头和其列值相匹配,采用两个数组进行一一对应(或使用Map)
1 //Excel表头、文件名(titles的长度和xml中sql查询的字段个数(keys长度)一致)
2 String[] titles = {"编号", "姓名", "年龄"};
3 //Excel文件名
4 String name = "Excel表格下载";
5 //数据库对应字段
6 String[] keys = {"id", "name", "age"};
7
8 response.setContentType("application/binary;charset=UTF-8");
9 try {
10 ServletOutputStream out = response.getOutputStream();
11 try {
12 //设置文件头:一个参数是设置下载文件名
13 response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(name + ".xls", "UTF-8"));
14 } catch (UnsupportedEncodingException e1) {
15 e1.printStackTrace();
16 }
17 // 数据库对应的需要导出的Excel数据
18 List<Map<String, Object>> listMap = exportExcelDAO.exportExcelData();
19 // MyExcelUtils下载Excel
20 MyExcelUtils.export(titles, out, listMap, keys);
21 } catch (Exception e) {
22 e.printStackTrace();
23 }
POI方式实现Excel表格数据导出的更多相关文章
- 将页面中表格数据导出excel格式的文件(vue)
近期由于项目需要,需要将页面中的表格数据导出excel格式的文件,折腾了许久,在网上各种百度,虽然资料不少,但是大都不全,踩了许多坑,总算是皇天不负有心人,最后圆满解决了. 1.安装相关依赖(npm安 ...
- Vue+element UI实现表格数据导出Excel组件
介绍 这是一个可以将页面中的表格数据导出为Excel文件的功能组件,该组件一般与表格一起使用,将表格数据传给组件,然后通过点击组件按钮可将表格中的数据导出成Excel文件. 使用方法 由于封装该组件内 ...
- Java操作Jxl实现导出数据生成Excel表格数据文件
实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...
- 前端 vue表格数据导出Excel 文件实现
实现思路 使用json2csv将后台json数据转化为csv格式数据 采用创建Blob(二进制大对象)的方式来存放缓存数据: 生成下载链接: 创建一个a标签,设置href和download属性 触发a ...
- java的excel表格的导出与下载
今天做一个java对excel表格的导出和下载的时候,从网络上搜寻了下载的模板,代码如下: 控制层: @RequestMapping(value = "excelOut_identifier ...
- C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表
调用word的com组件将400条数据导入word表格中耗时10分钟简直不能忍受,使用NPOI组件耗时4秒钟.但是NPOI中替换书签内容的功能不知道是不支持还是没找到. 辅助类 Excel表格数据与D ...
- 前端Excel表格导入导出,包括合并单元格,表格自定义样式等
表格数据导入 读取导入Excel表格数据这里采用的是 xlsx 插件 npm i xlsx 读取excel需要通过 XLSX.read(data, {type: type}) 方法来实现,返回一个叫W ...
- jxl读取Excel表格数据
调用jxl包实现Excel表格数据的读取,代码如下: import java.io.File; import java.io.IOException; import java.util.ArrayLi ...
- 将包含经纬度点位信息的Excel表格数据导入到ArcMap中并输出成shapefile
将包含经纬信息的Excel表格数据,导入到ArcMap中并输出成shapefile,再进行后面的操作.使用这种方法可以将每一个包含经纬信息的数据在ArcMap中点出来. 一.准备数据 新建Excel表 ...
- JAVA处理Excel表格数据并写入数据库
package com.hncj.test; import java.io.FileInputStream; import java.sql.Connection; import java.sql.D ...
随机推荐
- 【转载】 PID算法的解析
原文来自DF创客社区地址:http://www.dfrobot.com.cn/community/thread-14783-1-1.html ----------------------------- ...
- 如何关闭NVIDIA显卡的CUDA运算功能
基本很少有人会想到要关闭NVIDIA显卡的CUDA计算功能,这东西不想用就不跑cuda代码不就可以了吗,但是作为一个深度学习服务器集群的管理者来说,这个功能还是有用处的.前一阵使用实验室的一台服务器的 ...
- SMU Summer 2024 Contest Round 4
SMU Summer 2024 Contest Round 4 Made Up 题意 给你三个序列 \(A,B,C\) ,问你满足 \(A_i = B_{C_j}\) 的 \((i,j)\) 对有多少 ...
- Microsoft Build 2023 After Party (Placeholder)
一年过去了,微软BUILD又回来了! https://build.microsoft.com/en-US/home This is a placeholder page for Microsoft B ...
- vue 报错 Component template should contain exactly one root element. If you are using v-if on multiple elements
vue 报错 Component template should contain exactly one root element. If you are using v-if on multiple ...
- Mac m1 安装 scrcpy
前提:已经安装 brew 1. 设定 HOMEBREW_BOTTLE_DOMAIN(不设定的时候 ,会遇到报错 Bottle missing, falling back to the default ...
- AWS Cloud Practioner 官方课程笔记 - Part 3
AWS Security 方案和功能 Amazon Inspector AWS Shield Price and Support Free Tier: Always Free, 12-month fr ...
- JavaScript Library – YouTube Embedded、YouTube Player API、YouTube Data API
YouTube Embed Video 参考: Embed videos & playlists 它和 Google Maps Embed 类似,是通过 iframe 完成的. <ifr ...
- 字节跳动的多平台绽放秘诀 | Flutter 开发者故事
字节跳动旗下运营着一系列成功的用户产品.企业应用以及服务,覆盖信息.教育.娱乐等不同领域.随着产品阵容的不断发展,传统的原生双平台开发已经难以满足团队更高效.更灵活.更精美,以及更多样的产品研发需求. ...
- Wpf使用NLog将日志输出到LogViewer
1 LogViewer LogViewer是通过UDP传输的高性能实时log查看器. 具有一下特性: 通过UDP读取日志 通过文件导入日志 导出日志到一个文件中 排序.过滤(日志树,日志等级)和查找 ...