返回顶部
首页 > 资讯 > 精选 >Java中怎么利用注解导出Excel
  • 833
分享到

Java中怎么利用注解导出Excel

2023-06-15 21:06:17 833人浏览 八月长安
摘要

本篇文章给大家分享的是有关Java中怎么利用注解导出excel,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Excel 导出-需求拆解在后台管理系统中,常常需要把数据导出 Ex

本篇文章给大家分享的是有关Java中怎么利用注解导出excel,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

Excel 导出-需求拆解

在后台管理系统中,常常需要把数据导出 Excel 表。

比如,在双十一过后,销售部要把商品订单录入到 Excel 表,财务部要把支付订单录入到 Excel 表,然后各部门汇总分析,最后找个时间讨论怎么改善公司的服务。

你想呀,双十一的订单成千上万,靠人工录入,少说也要花三四天,而且还特别容易出错。所以,你必须开发 Excel 导出功能。

那么,具体怎么做呢?

上次我们提到,注解想发挥作用,有三个要素:定义、使用、读取。这次,我们就利用注解的三个特性,来实现 Excel 导出功能,设计过程是这样的。

第一步,我们要创建不同的 Excel 模型。双十一过后,销售部要订单数据,财务部要支付数据,两个部门要的 Excel 表肯定也不一样,这就得帮每个部门创建不同的 Excel 模型,他们拿到想要的数据。

第二步,我们要根据 Excel 模型,来导出 Excel 表。

看到这,你应该明白 Excel 导出的设计过程了。接下来,我们就来一步步实现这个功能。

创建 Excel 模型

创建 Excel 模型,涉及到注解三要素中的定义、使用。

首先,定义 Excel 注解,我们直接看关键代码。

@Target({ElementType.FIELD})  @Retention(RetentionPolicy.RUNTIME)  public @interface ExcelField {            String title();               int sort() default 0;               int align() default 0;     }

这里用到了两个元注解@Retention和@Target。@Target代表这个注解只能放在成员变量上;@Retention代表这个注解要加载到 JVM 内存,我们可以用反射来读取注解。

此外,注解还有 3 个成员变量,分别对应:Excel 的字段标题、字段排序、对齐方式,方便大家微调表格。到了这,定义 Excel 注解就完成了。

接下来,使用注解,我们还是直接看代码。

public class OrderModel {      @ExcelField(title = "订单号", align = 2, sort = 20)      private String orderNo;      @ExcelField(title = "金额", align = 2, sort = 20)     private String amount;        // 创建时间      private Date createTime;         // 省略 getter/setter 方法  }

订单模型有 3 个字段:订单号、金额、创建时间,但这里注解只加到订单号、金额上,表示这两个字段会导出 Excel 表,而创建时间会忽略,你可以看看这副图片。

Java中怎么利用注解导出Excel

至此,我们完成了定义注解、使用注解,得到了一个 Excel 模型。但要想实现导出功能,还必须根据这个模型,生成出 Excel 表。

读取 Excel 模型

读取 Excel 模型,涉及到注解三要素中的读取。 我们需要读取注解,生成 Excel 表,这主要分成 3 个步骤:初始化 Excel 表对象—>写入数据到 Excel 表对象—>输出文件。

第一步,初始化 Excel 表对象。在这一步中,我们要根据 Excel 模型,生成一个 Excel 表对象,要创建这几个东西:标题、表头、样式等等。我们来看代码。

public class ExcelExporter {      // ...省略无数代码                  public ExcelExporter(String title, Class<?> cls) {          // 获取注解list          Field[] fs = cls.getDeclaredFields();          for (Field f : fs) {              ExcelField ef = f.getAnnotation(ExcelField.class);             if (ef != null) {                  annotationList.add(new Object[]{ef, f});              }          }          annotationList.sort(comparing(o -> ((ExcelField) o[0]).sort()));          // 通过注解获取表头          List<String> headerList = new ArrayList<>();          for (Object[] os : annotationList) {              String t = ((ExcelField) os[0]).title();              headerList.add(t);          }          // 初始化excel表:创建excel表、添加表标题、创建表头等等          initialize(title, headerList);      }  }

在初始化的时候,我们先从 Excel 模型对象中读取注解,获得一个注解列表;然后,再从注解列表中,读取 title-字段标题;最后,再初始化 Excel 表对象,包括:创建 Excel 表对象、添加表标题、创建表头、添加样式。

第二步,写入数据到 Excel 表对象。在这一步中,我们要把 Java 的列表数据写到 Excel 表对象里,让这些数据能变成 Excel 表的一行行信息。还是来看代码。

public class ExcelExporter {            // ...省略无数代码                  public <E> ExcelExporter setDataList(List<E> list) {          for (E dataObj : list) {              // 添加行              Row row = this.addRow();              // 获取数据,并写入单元格              int cellNo = 0;              for (Object[] os : annotationList) {                  // 获取成员变量的值                  Object value = null;                  try {                      value = Reflections.invokeGetter(dataObj, ((Field) os[1]).getName());                  } catch (Exception ex) {                      log.info(ex.toString());                      value = "";                  }                  if (value == null) {                      value = "";                  }                  // 写入单元格                  ExcelField ef = (ExcelField) os[0];                  this.addCell(row, cellNo++, value, ef.align());              }          }          return this;      }  }

我们先传入一个数据列表 dataList,然后用循环来遍历 dataList,在这个循环中,我们不断把数据写进 Excel 表对象里,具体操作是:创建了一个空白行,利用注解获取成员变量里的值,最后写进 Excel 表的单元格里。

第三步,输出文件。在这一步中,就是 Excel 表对象变成一个文件,来看下最后的代码吧。

public class ExcelExporter {            // ...省略无数代码            // ...省略无数代码                  public ExcelExporter writeFile(String fileName) throws IOException {          FileOutputStream os = new FileOutputStream(fileName);          this.write(os);          return this;      }  }

输出文件就没什么好说的了,就是指定文件名,然后把文件输出到指定的地方。

到了这,读取 Excel 模型就完成了。

当然,读取 Excel 模型涉及到注解的读取,这是最难理解的地方,因为读取注解要用到 Java 另一个高级特性&mdash;反射。而且,注解一般是用来简化业务,如果你对业务没有深刻的了解,是很难用好的。

以上就是Java中怎么利用注解导出Excel,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: Java中怎么利用注解导出Excel

本文链接: https://lsjlt.com/news/281701.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java中怎么利用注解导出Excel
    本篇文章给大家分享的是有关Java中怎么利用注解导出Excel,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Excel 导出-需求拆解在后台管理系统中,常常需要把数据导出 Ex...
    99+
    2023-06-15
  • 利用java怎么从数据库中导出Excel表格
    这期内容当中小编将会给大家带来有关利用java怎么从数据库中导出Excel表格,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。基于maven jar包引入如下:  <dependency> ...
    99+
    2023-05-31
    java ava excel
  • Java怎么导出Excel
    java实现Excel数据导出:(推荐:java视频教程)目前,比较常用的实现Java导入、导出Excel的技术有两种Jakarta POI和Java ExcelJakarta POI 是一套用于访问微软格式文档的Java API。Jaka...
    99+
    2019-02-14
    Java
  • ASP.Net MVC怎么利用NPOI导入导出Excel
    今天小编给大家分享一下ASP.Net MVC怎么利用NPOI导入导出Excel的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
    99+
    2023-06-30
  • Java基于注解的Excel导出方式
    目录Java注解的Excel导出java简单的导出excel总结Java注解的Excel导出 依赖:  <dependency>             <grou...
    99+
    2023-01-09
    Java注解 Java的Excel导出 Java Excel导出
  • Java利用POI实现导入导出Excel表格
    本文实例为大家分享了Java利用POI实现导入导出Excel表格的具体代码,供大家参考,具体内容如下 一、Java利用POI实现导入导出Excel表格demo 1.引入依赖 <...
    99+
    2024-04-02
  • Java如何利用POI实现导入导出Excel表格
    这篇文章主要介绍“Java如何利用POI实现导入导出Excel表格”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java如何利用POI实现导入导出Excel表格”文章能帮助大家解决问题。一、Java...
    99+
    2023-07-06
  • 怎么在Java中导出Excel通用工具类
    今天就跟大家聊聊有关怎么在Java中导出Excel通用工具类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、构建pom.xml我们的工程是利用Maven来构建的,项目具体搭建过程大...
    99+
    2023-06-14
  • Java 导出Excel利器 JXLS(excel模板配置教程)
    简介 相信大家能经常性的遇到项目上各类excel的导出,简单的excel格式,用简单的poi,easyExcel等工具都能导出。但是针对复杂的excel,有固定的样式、合并单元格、动态列等各类要求,导致excel 导出需要花很大一部分精力去...
    99+
    2023-09-01
    excel java
  • java使用EasyExcel导入导出excel
    目录一、准备工作 1、导包二、了解注解 1、常用注解2、@ExcelProperty注解 3、@ColumnWith注解 4、@ContentFontStyle注解 5、@Conte...
    99+
    2024-04-02
  • 怎么使用Java+element实现excel导入和导出
    本篇内容介绍了“怎么使用Java+element实现excel导入和导出”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本项目是前端vue3,...
    99+
    2023-07-06
  • Java怎么实现Excel导入导出操作
    今天小编给大家分享一下Java怎么实现Excel导入导出操作的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 功能测试1....
    99+
    2023-06-29
  • java中excel导出乱码解决方法
    错误方式:response.setHeader("Content-Disposition", "inline;filename="+ new String(fileName.getBytes(),"utf-8")); String file...
    99+
    2016-02-24
    java 乱码
  • Java利用Reflect实现封装Excel导出工具类
    目录定义ExcelExportEnum定义导出方法校验入参利用java反射获取Service中的所有method提取method中的入参对象,获取其Class传入参数,调用导出方法注...
    99+
    2022-11-13
    Java Reflect封装Excel导出工具类 Java Excel导出 Java Reflect
  • Java利用Easyexcel导出excel表格的示例代码
    目录1.导入 EasyExcel Maven包2.配置3.输出Excel到前端1.导入 EasyExcel Maven包 <!--easyexcel 导出excel依赖--&g...
    99+
    2024-04-02
  • JAVA怎么实现导出Excel功能
    Java可以通过使用Apache POI库来实现导出Excel功能。下面是一个简单的示例代码:```javaimport org.a...
    99+
    2023-10-08
    java
  • 使用PhpSpreadsheet怎么导入导出Excel
    这篇文章给大家介绍使用PhpSpreadsheet怎么导入导出Excel,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。phpspreadsheet 引入由于PHPExcel早就停止更新维护,所以适用phpspreads...
    99+
    2023-06-15
  • 利用PHPExcel导出excel文件的方法详解
    最近工作中需要用到phpexcel导出excel表格。自动存储在固定位置。 之前导出excel使用header原生导出。 但是这种方法,我没有找到可以自动存储的功能。 如果你知道,请...
    99+
    2022-11-13
    PHPExcel导出excel文件 PHPExcel导出excel PHP 导出excel文件
  • 利用模板导出文件之XLSTransformer导出excel文件
    使用XLSTransformer库导出excel文件的步骤如下:1. 安装XLSTransformer库:在命令行中运行`pip i...
    99+
    2023-09-14
    excel
  • Java Poi导出Excel表格详解
    一、导出下面的表格 二、流程详解         1、导出excel需要先将数据准备好         2、创建工作傅对象SXSSFWorkbook         3、使用工作傅对象创建sheet对象(工作页)         4、使用...
    99+
    2023-09-01
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作