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表格数据导出的更多相关文章

  1. 将页面中表格数据导出excel格式的文件(vue)

    近期由于项目需要,需要将页面中的表格数据导出excel格式的文件,折腾了许久,在网上各种百度,虽然资料不少,但是大都不全,踩了许多坑,总算是皇天不负有心人,最后圆满解决了. 1.安装相关依赖(npm安 ...

  2. Vue+element UI实现表格数据导出Excel组件

    介绍 这是一个可以将页面中的表格数据导出为Excel文件的功能组件,该组件一般与表格一起使用,将表格数据传给组件,然后通过点击组件按钮可将表格中的数据导出成Excel文件. 使用方法 由于封装该组件内 ...

  3. Java操作Jxl实现导出数据生成Excel表格数据文件

    实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...

  4. 前端 vue表格数据导出Excel 文件实现

    实现思路 使用json2csv将后台json数据转化为csv格式数据 采用创建Blob(二进制大对象)的方式来存放缓存数据: 生成下载链接: 创建一个a标签,设置href和download属性 触发a ...

  5. java的excel表格的导出与下载

    今天做一个java对excel表格的导出和下载的时候,从网络上搜寻了下载的模板,代码如下: 控制层: @RequestMapping(value = "excelOut_identifier ...

  6. C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表

    调用word的com组件将400条数据导入word表格中耗时10分钟简直不能忍受,使用NPOI组件耗时4秒钟.但是NPOI中替换书签内容的功能不知道是不支持还是没找到. 辅助类 Excel表格数据与D ...

  7. 前端Excel表格导入导出,包括合并单元格,表格自定义样式等

    表格数据导入 读取导入Excel表格数据这里采用的是 xlsx 插件 npm i xlsx 读取excel需要通过 XLSX.read(data, {type: type}) 方法来实现,返回一个叫W ...

  8. jxl读取Excel表格数据

    调用jxl包实现Excel表格数据的读取,代码如下: import java.io.File; import java.io.IOException; import java.util.ArrayLi ...

  9. 将包含经纬度点位信息的Excel表格数据导入到ArcMap中并输出成shapefile

    将包含经纬信息的Excel表格数据,导入到ArcMap中并输出成shapefile,再进行后面的操作.使用这种方法可以将每一个包含经纬信息的数据在ArcMap中点出来. 一.准备数据 新建Excel表 ...

  10. JAVA处理Excel表格数据并写入数据库

    package com.hncj.test; import java.io.FileInputStream; import java.sql.Connection; import java.sql.D ...

随机推荐

  1. git 如何删除一个文件名为nul的文件

    前提 当我发现存在一个nul的文件,手动删除/移动它,都会提示ms-dos功能无效或文件过大.想一想这个nul应该是某个保留字,所以普通的方式不能删除 解决方案 https://stackoverfl ...

  2. Linux系统中目录和文件夹是一个东西吗

    目录和文件夹的区别   在阐述Linux系统的目录前,我们先来回忆一下现实中的目录和文件夹是什么:   在现实中,文件夹(封套)可以用来保存几个文件(或其他项目).而目录则可以用来维护项目的索引,这样 ...

  3. MySQL8服务无法启动,服务没有报告任何错误

    MySQL8服务无法启动,服务没有报告任何错误 错误信息: 免安装版mysql-8.0.15-winx64.zip 按照教程来安装,解压,增加my.ini文件,修改文件内部的地址信息,配置环境变量pa ...

  4. 使用Web Component定义自己的专属网页组件

    什么是Web Component Web Component是一套Web浏览器的技术和规范,能够让开发者定制自己的HTML元素 来自MDN的描述: Web Component 是一套不同的技术,允许你 ...

  5. 【单调栈+倍增】[P7167 [eJOI2020 Day1] Fountain

    [单调栈+倍增][P7167 [eJOI2020 Day1] Fountain 思路 用单调栈处理每个圆盘溢出后流到的第一个位置,然后倍增优化. 代码 #include <bits/stdc++ ...

  6. 记一次解决OTA死机重启bug,如何分析与解决措施?!

    背景: 平台:stm32mp151平台 什么是OTA? 说起OTA我们应该都不陌生,它是一种可以为设备无损失升级系统的方式,能将新功能远程部署到产品上. 我们不仅可以通过网络下载OTA升级包,也可以通 ...

  7. Linux下C语言操作网卡的几个代码实例?特别实用

    前面写了一篇关于网络相关的文章:如何获取当前可用网口. <简简单单教你如何用C语言列举当前所有网口!> 那么如何使用C语言直接操作网口? 比如读写IP地址.读写MAC地址等. 一.原理 主 ...

  8. bazel 简介(一)—— 基础概念与原理

    0x01 背景 bazel目前已广泛用于云计算领域的开源软件的构建如k8s.kubevirt等,本文以一个新手的角度分享下bazel的基础知识,其存在的价值.对比下,它与其他已经存在的构建系统的差别, ...

  9. WPF性能优化之UI虚拟化

    @ 目录 前言 一.VirtualizingStackPanel 1.1 虚拟化功能介绍 1.在Window中添加一个ListBox控件. 2.在设计视图中用鼠标选中ListBox控件并右健依次单击& ...

  10. .NET 9 RC1 正式发布

    .NET 9 RC1 是 .NET 9 的第一个候选发布版本(Release Candidate),标志着该版本接近最终发布.根据Github 上相关的内容,我们可以总结出以下几点: 新功能和改进: ...