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. kaggle上的jax框架的环境配置(TPU版本)

    导出时间: 2024-01-18 21:00:37 星期四 python版本: Python 3.10.13 absl-py==1.4.0 accelerate==0.25.0 aiofiles==2 ...

  2. windows10开启电源模式中的休眠选项

    使用管理员权限开启PowerShell,输入命令: powercfg -h on

  3. Tensorflow1.14中placeholder.shape和tf.shape(placeholder)的区别

    最近在看TensorFlow的代码,还是1.14版本的TensorFlow的,代码难度确实比pytorch的难上不是多少倍,pytorch的代码看一遍基本能看懂个差不多,TensorFlow的代码看一 ...

  4. Inno Setup 出现 the drive or unc share you selected does not exist or is not accessible 解决记录

    背景 软件是使用Inno Setup的,且安装后,再次安装是默认安装到历史路径.一次用户电脑维修后,发现再次安装后报错 解决办法 取消自动安装到默认路径就好了~ UsePreviousAppDir=n ...

  5. LVS-TUN隧道模式

    当然可以.以下是按照您的要求整理的表格形式的实验手册: 主机名称 网卡信息 安装应用 系统 Client客户端 192.168.2.101 无 RHEL8/CentOS8 Lvs服务器(DR) DIP ...

  6. 牛客周赛 Round 6

    牛客周赛 Round 6 A-游游的数字圈_牛客周赛 Round 6 (nowcoder.com) 枚举即可 #include <bits/stdc++.h> #define int lo ...

  7. Next.js 中为什么 App Router 可能是未来,但 Pages Router 仍然重要?

    Next.js 作为一个强大的 React 框架,为开发者提供了两种路由系统:App Router 和 Pages Router.这两种路由系统各有特色,适用于不同的场景.本文将深入探讨这两种路由系统 ...

  8. Win32 GDI 在内存中绘制彩色的位图

    Wind32 GDI在内存中绘制彩色位图 1创建兼容的内存DC hPicture为创建的静态文本框控件句柄 LRESULT OnPaint(HWND hWnd) { PAINTSTRUCT ps; H ...

  9. C#ListView类的继承

    ListView控件类新加方法 新建一个类myListView class myListView : System.Windows.Forms.ListView { //添加自定义的方法 -- //设 ...

  10. zabbix 二次开发(添加menu)

    zabbix 二次开发--- 在zabbix菜单栏中增加 CMDB 菜单,该菜单下有个子栏目 CMDB overview,如图: 实现此效果,我们需要修改两个地方:menu.inc.php 和 mai ...