最简单方便的excel导出方式

本文介绍了两种快速导出Excel的方法,包括阿里开源的EasyExcel和基于模板的XLSTransformer。EasyExcel灵活方便,而XLSTransformer通过模板实现数据填充,但灵活性较低。文中提供了详细的步骤和依赖引入,帮助开发者实现更便捷的Excel导出功能。
摘要由CSDN通过智能技术生成

        前言:开发各种统计系统以及报表系统之类的不可避免的就是导出excel功能,传统的poi用过的都知道,每个sheet每个row都需要去定义去美化,繁琐不说还很浪费时间,最近本人发现两种较快速的方法,一种是excel模版方式(模版性太强,不灵活),一种是使用阿里开源的easyexcel(灵活方便);下面对两种方式都做一个简单使用介绍:

一、XLSTransformer模板方式导出excel

1、首先需要引入一些依赖的jar包(maven项目直接查询对应的依赖即可):

jxls-core-0.9.7.jar

jxls-reader-0.9.7.jar

poi-3.6.jar

commons-jexl-1.1.jar

commons-digester-2.0.jar

2、数据封装

将你查询的数据放入List<Map<String, Object>> 中,然后再使用Map去封装你的此list;

List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
for(int i = 0;i<10;i++){
    Map<String,Object> map=new HashMap<>();
    map.put("name","张三");
    map.put("sex","男");
    map.put("age","18");
    list.add(map);
}
Map data = new HashMap();
data.put("rsList", list);
String fileName="excel.xls";
XLSTransformer transformer = new XLSTransformer();
try {
	transformer.transformXLS("模板位置", data, "生成文件位置"+fileName);
} catch (InvalidFormatException e) {
	e.printStackTrace();
}

3、编写模版,准备导出

模版为一个excel文件,文件中使用<jx:forEach>标签遍历数据,如下图,各个字段的标题以及其他样式(加粗、颜色等)直接在模版excel中设置好即可,数据的字段与map中属性一致即可;

此方式导出配置完毕,之后将文件下载即可,下载方法也已放在文章最后;

二、easyExcel方式导出excel

1、同样的,先引入jar包;

<!-- easyexcel -->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>easyexcel</artifactId>
	<version>2.0.5</version>
	<exclusions>
		<exclusion>
			<groupId>org.ehcache</groupId>
			<artifactId>ehcache</artifactId>
		</exclusion>
	</exclusions>
</dependency>
<dependency>
	<groupId>org.ehcache</groupId>
	<artifactId>ehcache</artifactId>
	<version>${ehcache.version}</version>
	<exclusions>
	    <exclusion>
		    <artifactId>slf4j-api</artifactId>
		    <groupId>org.slf4j</groupId>
	    </exclusion>
	</exclusions>
</dependency>

2、编写导出的公共配置以及属性(可以采用我下面写好的工具类,基于springboot项目)

package util;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.metadata.style.WriteFont;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.edi.framework.core.utils.IdUtils;
import com.edi.nsme.admin.util.FileUtil;
import com.edi.nsme.db.constants.Constants;
import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtField;
import javassist.CtNewMethod;
import javassist.NotFoundException;
import javassist.bytecode.AnnotationsAttribute;
import javassist.bytecode.ClassFile;
import javassist.bytecode.ConstPool;
import javassist.bytecode.FieldInfo;
import javassist.bytecode.annotation.Annotation;
import javassist.bytecode.annotation.ArrayMemberValue;
import javassist.bytecode.annotation.IntegerMemberValue;
import javassist.bytecode.annotation.ShortMemberValue;
import javassist.bytecode.annotation.StringMemberValue;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;

@Component
public class EasyExportUtil {

    private final Logger logger = LoggerFactory.getLogger(getClass());

    // 默认字体
    private static final short DEFAULT_FONT_SIZE_TITLE = 12;
    private static final short DEFAULT_FONT_SIZE_CONTENT = 11;
    private static final String EXCEL_DEFAULT_FONT = "宋体-18030";
    private static final String EXCEL_SHEET_TITLE_FONT = "黑体";

    public static final int DEFAULT_SHEET_INDEX = 0;

    @Value("${export.filePath}")//在springboo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值