Apache POI实现数据以excel文件的形式导出

devtools/2024/10/15 16:08:21/

Apache POI介绍

        Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI 都是用于操作 Excel 文件。

        应用场景:银行网银系统导出交易明细、各种业务系统导出excel报表、批量导入业务数据等。

实现步骤

  1. 构造excel表格数据。
  2. 创建工作薄,工作薄可以根据输入流进行创建指定模板的工作薄,也可以创建空的工作薄。
    1. XSSFWorkbook excel = new XSSFWorkbook(inputStream); 根据指定输入流创建工作薄。
    2. XSSFWorkbook excel = new XSSFWorkbook(); 创建一个空的工作薄。
  3. 根据创建的工作薄对象创建sheet页;如果创建指定模板的工作薄,此处为获取sheet页。
    1. XSSSheet = excel.creatSheet("name");   创建名为name的sheet页。
    2. XSSSheet = excel.getSheetAt(0);        获取第一页。
  4. 创建行对象、获取行对象。
    1. XSSFRow row1 = sheet.createRow(0);        创建第一行。
    2. XSSFRow row1 = sheet.get(0); 获取行对象。
  5. 创建单元格对象、获取单元格对象。
    1. row2.createCell(1).setCellValue("张三");
    2. row2.getCell(1).setCellValue("张三");
  6. 填充数据。
  7. 通过输出流发送excel文件给客户端。

代码编写

    /*** 导出报表数据* @param response*/@Overridepublic void exportBusinessData(HttpServletResponse response) {// 查找最近一个月的数据LocalDate endDate = LocalDate.now().minusDays(1);LocalDate beginDate = LocalDate.now().minusDays(30);// 查找相应数据BusinessDataVO businessData = workspaceService.getBusinessData(LocalDateTime.of(beginDate, LocalTime.MIN), LocalDateTime.of(endDate, LocalTime.MAX));// 获取输入流InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("template/运营数据报表模板.xlsx");try {// 创建excel模板对象XSSFWorkbook excel = new XSSFWorkbook(inputStream);// 获取sheet页XSSFSheet sheet = excel.getSheetAt(0);// 写入获取数据时间sheet.getRow(1).getCell(1).setCellValue("运营时间:" + beginDate + "至" + endDate);// 获取第四行XSSFRow row = sheet.getRow(3);row.getCell(2).setCellValue(businessData.getTurnover());row.getCell(4).setCellValue(businessData.getOrderCompletionRate());row.getCell(6).setCellValue(businessData.getNewUsers());row = sheet.getRow(4);row.getCell(2).setCellValue(businessData.getValidOrderCount());row.getCell(4).setCellValue(businessData.getUnitPrice());// 完成每日报单填写for (int i = 0; i < 30; i++) {LocalDateTime beginTime = LocalDateTime.of(beginDate, LocalTime.MIN);LocalDateTime endTime = LocalDateTime.of(beginDate, LocalTime.MAX);// 查找每日对应数据businessData = workspaceService.getBusinessData(beginTime, endTime);// 填充excel表格sheet.getRow(7 + i).getCell(1).setCellValue(String.valueOf(beginDate));sheet.getRow(7 + i).getCell(2).setCellValue(businessData.getTurnover());sheet.getRow(7 + i).getCell(3).setCellValue(businessData.getValidOrderCount());sheet.getRow(7 + i).getCell(4).setCellValue(businessData.getOrderCompletionRate());sheet.getRow(7 + i).getCell(5).setCellValue(businessData.getUnitPrice());sheet.getRow(7 + i).getCell(6).setCellValue(businessData.getNewUsers());beginDate = beginDate.plusDays(1);}// 获取输出流ServletOutputStream outputStream = response.getOutputStream();excel.write(outputStream);// 关闭资源inputStream.close();outputStream.close();excel.close();} catch (IOException e) {e.printStackTrace();}}
}


http://www.ppmy.cn/devtools/126235.html

相关文章

echarts圆环图中间加文字

关键代码在下面&#xff0c;直接添加 title 即可 title: {show: true,text: 100%, //图中间的值x: center, //居中y: center,textStyle: {fontSize: 15,color: pink,fontWeight: normal,fontWeight:800}}, 实操请戳这里&#xff01;&#xff01;&#xff01;&#xff01;

Elasticsearch的安装与配置

注意&#xff1a;elasticsearch 禁止安装在/root路径下&#xff01; 1、创建用户组 groupadd elastic 2、创建用户 useradd es -d /home/es -g elastic echo es | passwd es --stdin 3、给新创建的用户进行授权 chown -R es:elastic /home/es chmod -R 775 /home/es 4…

python爬虫--某动漫信息采集

python爬虫--tx动漫 一、采集主页信息二、采集详情页信息三、代码供参考一、采集主页信息 略。 二、采集详情页信息 如上图所示,使用xpath提取详情页的标题、作者、评分、人气、评论人数等数据。 三、代码供参考 import csv import time import random import requests fr…

MySQL数据库操作——(2)

3 DML&#xff08;数据操作&#xff09; 3.1 添加数据 insert语法&#xff1a; 向指定字段添加数据 insert into 表名 (字段名1, 字段名2) values (值1, 值2); 全部字段添加数据 insert into 表名 values (值1, 值2, ...); 批量添加数据&#xff08;指定字段&#xff09; ins…

2000.1-2024.7中国经济政策不确定性指数(月度)

2000.1-2024.7中国经济政策不确定性指数&#xff08;月度&#xff09; 1、时间&#xff1a;2000.1-2024.7 2、指标&#xff1a;Date、CNEPU 3、来源&#xff1a;China Economic Policy Uncertainty Index 4、说明&#xff1a;中国经济政策不确定性指数&#xff0c;用于衡量…

浏览器开发者工具,http请求,负载的展现形式:查询字符串参数、表单数据、请求负载

1.查询字符串参数 在url?后面拼参数 2.表单数据 将参数通过请求体发送。如html form表单发送post请求时&#xff0c;会将参数放入请求体 3.请求负载 请求体的非参数

外包干了5天,技术明显退步

我是一名本科生&#xff0c;自2019年起&#xff0c;我便在南京某软件公司担任功能测试的工作。这份工作虽然稳定&#xff0c;但日复一日的重复性工作让我逐渐陷入了舒适区&#xff0c;失去了前进的动力。两年的时光匆匆流逝&#xff0c;我却在原地踏步&#xff0c;技术没有丝毫…

0045__Python 模块下 __init__.py 文件

Python 模块下 __init__.py 文件_python init.py-CSDN博客