java后台实现Excel的导出:easypoi实现

开发笔记 | EasyPoi快速学习实现excel导入导出 easypoi学习笔记 阅读详情

作为一个稀有的Java妹子,所写的所有博客都只是当作自己的笔记,留下证据自己之前是有用心学习的~哈哈哈哈(如果有不对的地方,也请大家指出,不要悄悄咪咪的不告诉我)

1.概述

在企业的后台系统中,报表导出是经常会有的一个功能,使用easypoi可以非常方便的实现Excel的导出。

2.实现步骤

2.1 引入依赖

 		<dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>3.0.3</version>
        </dependency>

2.2 导出报表工具类

public class ExcelExportUtil {
	//大数据量时,使用追加的方式将数据填充到Excel中
    public static Workbook exportBigExcel(ExportParams entity, Class<?> pojoClass,
                                          Collection<?> dataSet) {
        ExcelBatchExportServer batachServer = ExcelBatchExportServer
                .getExcelBatchExportServer(entity, pojoClass);
        return batachServer.appendData(dataSet);
    }

    public static void closeExportBigExcel() {
        ExcelBatchExportServer batachServer = ExcelBatchExportServer.getExcelBatchExportServer(null,
                null);
        batachServer.closeExportBigExcel();
    }
}

2.3 表格实体类

@ExcelTarget:表明该类是表格实体类
@Excel:该列的列头的值

@Data
@ExcelTarget("orderExcelModel")
public class OrderExcelModel implements Serializable {

    private static final long serialVersionUID =1L;
    @Excel(name = "订单号")
    private String xmbzNo;
	@Excel(name = "团购码")
	private String platformOrderId;
	@Excel(name = "渠道")
	private String channelName;
    @Excel(name = "订单状态")
    private String status;
    @Excel(name = "送货地址")
    private String receiverAddress;
    @Excel(name = "送货日期")
    private String deliveryDate;
    @Excel(name = "送货开始时间")
    private String deliveryStartTime;
	@Excel(name = "送货结束时间")
	private String deliveryEndTime;
    @Excel(name = "商品Sku")
    private String skuId;
    @Excel(name = "蛋糕名称")
    private String goodsName;
    @Excel(name = "规格")
    private String goodsSpecs;
    @Excel(name = "数量")
    private String num;
    @Excel(name = "收货人手机号")
    private String receiverPhone;
    @Excel(name = "配送员")
    private String delivery;
    @Excel(name = "财务需求")
    private String merchantName;
    @Excel(name = "配送需求")
    private String deliveryRemark;
    @Excel(name = "生产需求")
    private String generateRemark;
	@Excel(name = "客户备注")
	private String consumerRemark;
    @Excel(name = "巧克力牌内容")
    private String blessings;
	@Excel(name = "订单总价")
    private BigDecimal originalPrice;
	@Excel(name = "付款金额")
    private BigDecimal totalPrice;
	@Excel(name = "配送费")
    private BigDecimal postPrice;
	@Excel(name = "优惠金额")
    private BigDecimal discountPrice;
    @Excel(name = "总仓")
    private String mainWarehouse;
    @Excel(name = "分仓")
    private String branchWarehouse;
	@Excel(name = "下单时间")
	private String orderTime;
    @Excel(name = "签收时间")
    private String receivedTime;
    @Excel(name = "操作人")
    private String operator;
    @Excel(name = "城市")
    private String deptName;
}


2.4 查询数据分页导出到excel

public void downLoadOrderExcel(StatisticsQueryRequest statisticsQueryRequest, HttpServletResponse response) {
		dealTime(statisticsQueryRequest);
		Workbook workbook = null;
		ExportParams params = new ExportParams("订单统计报表", "订单统计报表");
		//获取数据
		R orderInfoCount = iOrderClient.getOrderInfoCount(statisticsQueryRequest);
		Integer flag = 0;
		if (orderInfoCount != null && orderInfoCount.getCode() == HttpStatus.OK.value()) {
			//设置分页参数
			Integer size = (Integer) orderInfoCount.getData();
			BigDecimal divide = new BigDecimal(size).divide(new BigDecimal(excelPageSize), 0, BigDecimal.ROUND_UP);
			flag = divide.intValue();
			for (int i = 0; i < flag; i++) {
				statisticsQueryRequest.setPage(i);
				statisticsQueryRequest.setSize(Integer.parseInt(excelPageSize));
				List<OrderExcelModel> execlDataOrder = getExeclDataOrder(statisticsQueryRequest);
				//分页导出数据
				workbook = ExcelExportUtil.exportBigExcel(params, OrderExcelModel.class, execlDataOrder);
			}
		}else {
			log.error("es服务中断!");
		}
		if (workbook != null) {
			ExcelExportUtil.closeExportBigExcel();
		}
		dealResponse(response, workbook);
	}
	//返回报表,直接下载
void dealResponse(HttpServletResponse response, Workbook workbook) {
		if (workbook != null) {
			try {
				response.setHeader("Content-disposition", "attachment; filename=" + (new SimpleDateFormat("yyyy-MM-dd")).format(new Date()) + "_" + UUID.randomUUID() + ".xls");
				response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
				ServletOutputStream exportXls = response.getOutputStream();
				workbook.write(exportXls);
				exportXls.close();
			} catch (Exception e) {
				e.printStackTrace();
				log.info("导出报表出错," + e);
			}
		}

	}
使用easypoi导出excel实现动态列 使用easypoi导出excel实现动态列 说明: 使用的是easypoi进行导出 行头是动态生成 依据key进行列匹配,进行数据填充 第一列进行纵向动态合并 自己的一个使用,记录一下 实现效果 变更前样式 变更后样式 代码解析 动态生成列头 private List&lt;ExcelExportEntity&gt; dynamicNewAddExcel(List&lt;Platfo... 阅读详情

相关推荐

Excel导出百万级数据

Excel导出百万级数据

2022-08-11 EasyPoi如何导出数据量较大的Excel

相信大家一定在工作工程中经历过数据量大,普通的导出已经满足不了实际需求,那么这里我给大家分享一个稍微有点用的,使用easyPoi导出数据比较大的方法

whs1249598864的博客 5786

华三模拟器实战:IPSec VPN穿越NAT的完整配置与调试(附常见问题排查)

本文详细解析了华三模拟器中IPSec VPN穿越NAT的完整配置与调试方法,包括基础环境准备、分步配置、ACL协调策略及高级故障排查。通过实战案例和关键参数解析,帮助网络工程师解决IPSec与NAT协同工作的典型问题,提升企业网络安全性。

weixin_33724046的博客 460

Easypoi导出总结

1 Easypoi介绍 1.1 功能介绍 1.2使用介绍 1.3注解介绍

weixin_46649054的博客 1839

SAP PS项目结算实操:从CJ20N到CJ88,手把手搞定项目成本结转与凭证生成

本文详细解析SAP PS项目结算全流程,从CJ20N到CJ88的操作要点,涵盖成本归集、结算规则配置、结果分析及凭证生成等关键环节。特别针对FICO模块中的项目凭证流转问题提供实战解决方案,帮助财务人员规避常见配置错误,提升项目结算效率与准确性。

weixin_26833503的博客 811

vit的cam和注意力图: VIT模型的可解释性

VIT的热力图怎么画

YI_SHU_JIA的博客 1万+

上万数据秒级导出-easypoi高版本(exportBigExcel)

导出excel

dyy20210625的博客 1278

Pyside6实战:3种.ui文件加载方式对比(附完整代码示例)

本文深入解析Pyside6中3种.ui文件加载方式的优劣与性能优化策略,包括动态加载QUiLoader、预编译方案及混合策略。通过实测数据和完整代码示例,帮助开发者根据项目需求选择最优解,提升界面加载效率与内存管理。

weixin_30897233的博客 88

VUE脚手架+easypoi 完成Excel导出功能

后台java: /** * Easypoi导出Excel * @param umsOrderStatisticsVo * @param response * @return * @throws Exception */ @ApiOperation("Easypoi导出Excel") @RequestMapping(va...

听风动的博客 2013

【中兴交换机MC-LAG配置】

​ 中兴mc-lag配置 主设备配置如下: Keepalive链路 interface smartgroup1023 //用作MC-LAG的Keepalive链路接口 switch attribute disable yes description For_Keepalived exit interface xgei-0/1/1/47 switch attribute disable yes description For_Keepalived exit interface

qq_31440733的博客 1万+

打开.nc降水气象数据制作年降水量地图

图层的单位为度,在反距离插值中也是以度为单位,比较麻烦,还是想用以m为单位的投影,这里是个bug,后续调整一下。该彩色部分是以2021年1月、2月、3月的降水数据分别作为RGB得到。因为该栅格的分辨率还是太大了,一个栅格就能覆盖一个县,若想要进行降尺度,可以做插值处理。下载的数据集为2021-2022年,因此有12+12=24个月,24个波段。想要得到廊坊市周围的数据,需要裁剪范围,在降水数据图层上导出数据。打开数据管理工具-投影和变换-定义投影。在降水数据图层上右击属性,添加投影。得到了降尺度的插值图。

所有专家都曾始于新手 4518

spring boot导出Excel表格(easypoi)

pom文件 <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>3.2.0</version> </dependency> <dependency> <groupId>cn.afterturn</groupId>

lyt的博客 185

【sealos安装指南】基于 Sealos 安装 Kubernetes 1.33.6 高可用集群

本文介绍使用Sealos工具快速搭建Kubernetes集群的详细指南。Sealos简化了K8s部署流程,自动完成系统调优,适合新手学习使用。文章提供了服务器规划、环境准备、在线/离线两种安装方式的具体步骤,包括主机名设置、swap关闭、数据目录配置等。重点讲解了Sealos的安装命令参数说明,以及添加/删除节点等常用操作。推荐使用Calico网络组件确保稳定性,并附有安装成功后的验证截图。该指南能帮助用户快速搭建一个包含master和worker节点的K8s集群,底层基于containerd运行。

欢迎你们到来,希望能帮到大家 461

java后台导出Excel表格

引言 java后台导出表格一般分两种:注解配置(@Excel)导出和自定义导出 注解配置(@Excel)导出 添加poi依赖 <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>${easypoi.version}</version> </dependency> &lt

qq_41366052的博客 1722

一个车载HUD的设计参考

一个车载HUD的设计参考

weixin_72050316的博客 795

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

EasyPoi实现excel文件导入导出

Excel(name = "商品创建时间", width = 20, orderNum = "12",exportFormat = "yyyy-MM-dd hh:mm:ss")@Excel(name = "性别", width = 20, replace = { "男_1", "女_2" },orderNum = "3")@Excel(name = "入学时间",width = 20,orderNum = "6")* @Description: 自定义报表导出样式,可以修改表头颜色,高度等。

u013897140的博客 653

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

springboot+layui+easypoi的文件导入导出

历经苦难完成这个看似简单的功能。。。 1.先导依赖,注意依赖版本必须一致 <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>4.0.0</version> <exclusions.

Wei_Jian_的博客 788

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

easypoi多sheet页导出

【代码】easypoi多sheet页导出。

k_x_sh的博客 56

JAVA实现Easypoi导出Excel

easypoi基于注解的导入导出,修改注解就可以修改Excel。

m0_46300599的博客 4665

java基于easypoi实现对导出的excel文档加密

**项目背景 随着项目日新月异的变化,对数据的安全性也越来越高,特别是政府类型的项目,数据安全往往是非常重要的,最近项目中导出的文件被要求需要密码才能打开,所以写下这篇文章,特此记录一下。 文章目录前言一、文档二、思考与实现1.ModelMap方式导出2.Workbook方式的导出3.封装导出工具类:至此,功能已完成 前言 本项目中使用的poi框架为easypoi,springboot版本为2.0.3 提示:以下是本篇文章正文内容,下面案例可供参考 一、文档 easypoi使用教程1.0 二.

weixin_44059948的博客 5997

集成easypoi实现excel图片导出

我这里就教大家采用注解的方式来进行excel的导出,后续有时间再给大家讲解如何通过excel模板的形式导出,好吧。主要就是基于@Excel注解来实现的。具体实现代码大家请看下边,中途有些重点,我会在代码下方进行拓展讲解的,这点大家可以放心。/*** excel导入user参数*/@Data/*** @Excel 作用在一个filed上面,对列的描述* @param name 列名* @param orderNum 下标,从0开始。*/

c_2333的博客 8296

easypoi Excel的导入导出(完整示例)

EasyPoi教程_V1.01. 前言 - Powered by MinDoc。

qq_14962815的博客 1万+

SpringBoot整合EasyPoi实现导入导出Excel

一、前言 平时我们写代码时常常需要一些导入导出的操作,一般都是用Apache的poi,但是发现很繁琐,总是在Copy… ,无意间发现一款简单粗暴的神器EasyPoi,导入导出很方便,而且支持多种格式的导入导出,下面介绍下基于@Excel注解导入导出Excel的步骤。 码云地址 :easypoi-spring-boot-starter 教程:EasyPoi 二、 功能 Excel自适应xls...

王小白来了 1万+

编码技巧——使用Easypoi导出Excel、多sheet、模板导出

本文主要介绍easypoi导出Excel的代码示例;自己之前手动实现过导出工具类《编码技巧——导出工具类》,基于实体和注解,通过反射来映射实体字段和exce列的关系;在部分工程里面看到了easypoi的二方包,于是准备试用下,记录下如何引入并使用Easypoi的过程;

娜娜米的博客 1万+

easypoi 实现任意格式的Excel导出(基于模板实现)

easypoi 实现任意格式的Excel导出 easypoi普通导出我就不说了,用他自带的注解就可以实现 1、 easypoi模板导出效果图 2、模板格式图 easypoi自定义模板可以支持任意复杂的数据导出,但是想学习如何使用还需要学习内心功法。学会他们基本的语法你就会使用这个了。 3、easypoi模板导出常用的模板语法 4、使用easypoi 首先引入依赖 <!-- https://mvnrepository.com/artifact/cn.afterturn/easypoi-base

SuperGorilla1的博客 1万+

EasyPoi导出Excel

1.导入maven依赖 <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>3.2.0</version> ...

lksdove的博客 2万+
上一篇: mysql数据库详解(五):日常开发收集的问题点
下一篇: Java接口有多个实现类,根据不同的业务场景创建不同的实现类实例
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值