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. 如何在无窗口模式下运行GPG——如何在命令行模式下使用gpg生成秘钥:How to make gpg prompt for passphrase on CLI——GPG prompt for password in command line

    参考: Unable to generate a key with GnuPG (agent_genkey failed: No such file or directory) ["No s ...

  2. MPI在Deep Learning的主流时代背景下除了传统计算领域外对DL的应用前景如何,MPI与NCCL的区别在哪???

    做分布式计算的基本上10年之前只听说过MPI,14年之前只听过hadoop的MapReduce,17年之前只听过TensorFlow. 那么这三个分布式计算软件或者说框架有什么区别呢???现在都是搞d ...

  3. NoSQL之事务和相关特性

    NoSQL 简介 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL". 在现代的计算系统上每天网络上都会产生庞大的数据量. 这些数据有很大一部分是由关 ...

  4. 如何让你的C语言程序打印的log多一点色彩?(超级实用)

    接着上一篇文章<由字节对齐引发的一场"血案" > 在平常的调试中,printf字体格式与颜色都是默认一致的. 如果可以根据log信息的重要程度,配以不同的颜色与格式,可 ...

  5. ubuntu18.04 heirloom-mailx 通过外部SMTP服务器发送邮件

    配置软件源ubuntu18.04上无法直接安装heirloom-mailx,需要添加软件源 sudo vi /etc/apt/sources.list写入 deb http://cz.archive. ...

  6. 6.2K star!推荐一款开源混沌工程测试平台:Chaos Mesh

    1.Chaos Mesh 介绍 Chaos Mesh是一个开源的混沌工程平台,旨在帮助用户在生产环境中测试.验证和优化其应用程序的可靠性和稳定性.通过引入故障注入和混沌工程原则,Chaos Mesh可 ...

  7. ASP.NET Core 如何紀錄 Entity Framework Core 5.0 自動產生的 SQL 命令

    在最近的幾個 Entity Framework Core 版本,對於 Logging (紀錄) 的撰寫方式一直在改變,大致上可區分成 EF Core 2.1 , EF Core 3.0+ 與 EF C ...

  8. 使用命令行 Windows 修改文件权限

    修改文件访问权限的命令行工具是 icacls,其使用语法是这样的: icacls <file> # 查看文件的访问权限 icacls <file> /grant <SID ...

  9. Java并发编程之验证volatile指令重排-理论篇

    Java并发编程之验证volatile指令重排-理论篇 Java并发包下的类中大量使用了volatile关键字.通过之前文章介绍,大家已经知道了volatile的三大特性:共享变量可见性:不保证原子性 ...

  10. sicp每日一题[1.44]

    Exercise 1.44 The idea of smoothing a function is an important concept in signal processing. If f is ...