1、添加maven依赖

 <dependency>     <groupId>com.alibaba</groupId>      <artifactId>easyexcel</artifactId>      <version>1.1.2-beat1</version> </dependency>

2、创建ExcelUtil工具类

package com.springboot.utils.excel;import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.metadata.BaseRowModel;
import com.alibaba.excel.metadata.Sheet;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;@Slf4j
public class ExcelUtil {private static Sheet initSheet;static {initSheet = new Sheet(1, 0);initSheet.setSheetName("sheet");//设置自适应宽度initSheet.setAutoWidth(Boolean.TRUE);}/*** 读取少于1000行数据* @param filePath 文件绝对路径* @return*/public static List<Object> readLessThan1000Row(String filePath){return readLessThan1000RowBySheet(filePath,null);}/*** 读小于1000行数据, 带样式* filePath 文件绝对路径* initSheet :*      sheetNo: sheet页码,默认为1*      headLineMun: 从第几行开始读取数据,默认为0, 表示从第一行开始读取*      clazz: 返回数据List<Object> 中Object的类名*/public static List<Object> readLessThan1000RowBySheet(String filePath, Sheet sheet){if(!StringUtils.hasText(filePath)){return null;}sheet = sheet != null ? sheet : initSheet;InputStream fileStream = null;try {fileStream = new FileInputStream(filePath);return EasyExcelFactory.read(fileStream, sheet);} catch (FileNotFoundException e) {log.info("找不到文件或文件路径错误, 文件:{}", filePath);}finally {try {if(fileStream != null){fileStream.close();}} catch (IOException e) {log.info("excel文件读取失败, 失败原因:{}", e);}}return null;}/*** 读大于1000行数据* @param filePath 文件觉得路径* @return*/public static List<Object> readMoreThan1000Row(String filePath){return readMoreThan1000RowBySheet(filePath,null);}/*** 读大于1000行数据, 带样式* @param filePath 文件觉得路径* @return*/public static List<Object> readMoreThan1000RowBySheet(String filePath, Sheet sheet){if(!StringUtils.hasText(filePath)){return null;}sheet = sheet != null ? sheet : initSheet;InputStream fileStream = null;try {fileStream = new FileInputStream(filePath);ExcelListener excelListener = new ExcelListener();EasyExcelFactory.readBySax(fileStream, sheet, excelListener);return excelListener.getDatas();} catch (FileNotFoundException e) {log.error("找不到文件或文件路径错误, 文件:{}", filePath);}finally {try {if(fileStream != null){fileStream.close();}} catch (IOException e) {log.error("excel文件读取失败, 失败原因:{}", e);}}return null;}/*** 生成excle* @param filePath  绝对路径, 如:/home/chenmingjian/Downloads/aaa.xlsx* @param data 数据源* @param head 表头*/public static void writeBySimple(String filePath, List<List<Object>> data, List<String> head){writeSimpleBySheet(filePath,data,head,null);}/*** 生成excle* @param filePath 绝对路径, 如:/home/chenmingjian/Downloads/aaa.xlsx* @param data 数据源* @param sheet excle页面样式* @param head 表头*/public static void writeSimpleBySheet(String filePath, List<List<Object>> data, List<String> head, Sheet sheet){sheet = (sheet != null) ? sheet : initSheet;if(head != null){List<List<String>> list = new ArrayList<>();head.forEach(h -> list.add(Collections.singletonList(h)));sheet.setHead(list);}OutputStream outputStream = null;ExcelWriter writer = null;try {outputStream = new FileOutputStream(filePath);writer = EasyExcelFactory.getWriter(outputStream);writer.write1(data,sheet);} catch (FileNotFoundException e) {log.error("找不到文件或文件路径错误, 文件:{}", filePath);}finally {try {if(writer != null){writer.finish();}if(outputStream != null){outputStream.close();}} catch (IOException e) {log.error("excel文件导出失败, 失败原因:{}", e);}}}/*** 生成excle* @param filePath 绝对路径, 如:/home/chenmingjian/Downloads/aaa.xlsx* @param data 数据源*/public static void writeWithTemplate(String filePath, List<? extends BaseRowModel> data){writeWithTemplateAndSheet(filePath,data,null);}/*** 生成excle* @param filePath 绝对路径, 如:/home/chenmingjian/Downloads/aaa.xlsx* @param data 数据源* @param sheet excle页面样式*/public static void writeWithTemplateAndSheet(String filePath, List<? extends BaseRowModel> data, Sheet sheet){if(CollectionUtils.isEmpty(data)){return;}sheet = (sheet != null) ? sheet : initSheet;sheet.setClazz(data.get(0).getClass());OutputStream outputStream = null;ExcelWriter writer = null;try {outputStream = new FileOutputStream(filePath);writer = EasyExcelFactory.getWriter(outputStream);writer.write(data,sheet);} catch (FileNotFoundException e) {log.error("找不到文件或文件路径错误, 文件:{}", filePath);}finally {try {if(writer != null){writer.finish();}if(outputStream != null){outputStream.close();}} catch (IOException e) {log.error("excel文件导出失败, 失败原因:{}", e);}}}/*** 生成多Sheet的excle* @param filePath 绝对路径, 如:/home/chenmingjian/Downloads/aaa.xlsx* @param multipleSheelPropetys*/public static void writeWithMultipleSheel(String filePath,List<MultipleSheelPropety> multipleSheelPropetys){if(CollectionUtils.isEmpty(multipleSheelPropetys)){return;}OutputStream outputStream = null;ExcelWriter writer = null;try {outputStream = new FileOutputStream(filePath);writer = EasyExcelFactory.getWriter(outputStream);for (MultipleSheelPropety multipleSheelPropety : multipleSheelPropetys) {Sheet sheet = multipleSheelPropety.getSheet() != null ? multipleSheelPropety.getSheet() : initSheet;if(!CollectionUtils.isEmpty(multipleSheelPropety.getData())){sheet.setClazz(multipleSheelPropety.getData().get(0).getClass());}writer.write(multipleSheelPropety.getData(), sheet);}} catch (FileNotFoundException e) {log.error("找不到文件或文件路径错误, 文件:{}", filePath);}finally {try {if(writer != null){writer.finish();}if(outputStream != null){outputStream.close();}} catch (IOException e) {log.error("excel文件导出失败, 失败原因:{}", e);}}}/*********************匿名内部类开始,可以提取出去******************************/@Datapublic static class MultipleSheelPropety{private List<? extends BaseRowModel> data;private Sheet sheet;}/*** 解析监听器,* 每解析一行会回调invoke()方法。* 整个excel解析结束会执行doAfterAllAnalysed()方法** @author: chenmingjian* @date: 19-4-3 14:11*/@Getter@Setterpublic static class ExcelListener extends AnalysisEventListener {private List<Object> datas = new ArrayList<>();/*** 逐行解析* object : 当前行的数据*/@Overridepublic void invoke(Object object, AnalysisContext context) {//当前行// context.getCurrentRowNum()if (object != null) {datas.add(object);}}/*** 解析完所有数据后会调用该方法*/@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {//解析结束销毁不用的资源}}/************************匿名内部类结束,可以提取出去***************************/}

测试

    @org.junit.Testpublic void writeBySimple(){String filePath = "/home/chenmingjian/Downloads/测试.xlsx";List<List<Object>> data = new ArrayList<>();data.add(Arrays.asList("111","222","333"));data.add(Arrays.asList("111","222","333"));data.add(Arrays.asList("111","222","333"));List<String> head = Arrays.asList("表头1", "表头2", "表头3");ExcelUtil.writeBySimple(filePath,data,head);}

Java实现将表格数据导出成Excel相关推荐

  1. jQuery表格数据导出成Excel插件

    下载地址 一款能将网页上的Table表格数据导出成Excel文件的插件,这个导出插件使用jQuery代码实现的,很实用的导出Excel插件. dd:

  2. java生成html表格数据_使用Java将表格数据导出成Excel格式

    前言:本文使用后台处理的办法导出前端表格中显示的数据. 引入依赖 org.apache.poi poi 3.17 书写PoiUtils public classPoiUtils {public sta ...

  3. 查询php 输出表格,php输出excel表格数据-PHP如何将查询出来的数据导出成excel表格(最好做......

    PHP如何将查询出来的数据导出成excel表格(最好做... php 把数据导出excel表格有多种方法,使用 phpExcel 等,以下代码接通过 header 生成 excel 文件的代码示例: ...

  4. 关于数据导出成excel表

    关于数据导出成excel表 咱们这里分享简单导出成excel表和筛选导出excel表,希望对各位有帮助,欢迎大家交流和点赞!!!! 我在这里使用的是一个导出工具类,如下: package cn.ms. ...

  5. vue导出excel加一个进度条_vue项目中如何把数据导出成excel文件

    Loading... 关于vue中如何把数据导出成excel文件 ### 1. 安装依赖 ``` yarn add file-saver yarn add xlsx yarn add script-l ...

  6. SpringBoot实现数据导出成Excel

    SpringBoot实现数据导出成Excel SpringBoot实现Excel读取在另一篇文章 文章地址: https://blog.csdn.net/qq_45367825/article/det ...

  7. Pl/sql 如何将oracle的表数据导出成excel文件?

    oracle将表数据导出成excel文件的方法 1)在SQL窗体上,查询需要导出的数据 --查询数据条件--select MID,CODE,NAME from Dxc_Goods_Cate where ...

  8. Vue将echarts数据导出成excel文件

    Vue将echarts数据导出成excel文件 一.下载vendor插件 下载 vendor 文件放置项目的 src 目录下 链接:https://pan.baidu.com/s/1XYYQ186zo ...

  9. 使用java在后台将数据导出为excel文件

    本文主要讲的是怎么使用java将数据导出为Excel文件,xls格式的. 例如:我从前台查询到的数据,要把数据进行导出为excl格式的文件.需要将前台的查询条件(数据)传递到后台,后台拿到数据,写sq ...

最新文章

  1. 在ApacheHTTPD服务器中使用DSO完全分析
  2. asp.net中的<%%>形式的详细用法总结
  3. ffmpeg基础使用
  4. LL-verilog语法:case用法
  5. 22.敏捷估计与规划——Why Agile Planning Works笔记
  6. AI ProCon倒计时6天:60+业内技术专家,探秘9大核心技术专题
  7. php 入库乱码,php 中文字符入库或显示乱码问题的解决方法_PHP教程
  8. nodejs mysql save_NodeJs Mysql简易操作工具
  9. Milvus加入LF AI孵化,立志成为最流行的AI数据平台
  10. 大数据在电力行业的应用前景有哪些?
  11. FileResponse django下载文件问题
  12. u盘写保护怎么才能真正去掉
  13. photoshop使用技巧_你应该知道的45个聪明的Photoshop技巧
  14. 超实用!轻松几步修复灰蒙蒙的情侣合照!
  15. nginx 根据IP转发到指定的后端服务器
  16. MPLS静态LSP部署
  17. 性能优化:一个 Flink 参数节省了 50% 的 CPU 消耗
  18. 国密算法java源码_国密算法SM2证书制作
  19. 【BAT】批处理文件基础(实用)
  20. 微信小程序自定义swiper轮播图面板指示点|小圆点|进度条

热门文章

  1. linux下python版本升级,Linux下升级python版本(示例代码)
  2. 项目经理思维转换的模式
  3. 饺子播放器解决视频黑边
  4. wept开发微信小程序
  5. usb控制linux关机,linux设备驱动之USB主机控制器驱动分析
  6. SCOUT-mini机器人配置
  7. 数字经济2023前瞻
  8. 找回wps未保存文件
  9. PT静态时序分析 第八课
  10. vue 实现手风琴折叠面板