Excel导入导出(autoExcel)

1. javaAPI

1.1 相关资料

        <dependency>
            <groupId>net.fenghaitao</groupId>
            <artifactId>auto-excel</artifactId>
            <version>2.0.0</version>
        </dependency>

1.2 API

(1) ExportPara Excel导出参数抽象类

方法描述
getDataSource()
setDataSource(Object value)
获取或设置数据源对象
getDataSourceType()获取数据源类型对象
getObjectType()获取数据对象class
getRecordCount()获取数据条数

(2) DirectExportPara  直接导出参数类

方法描述
DirectExportPara(Object dataSource, String sheetName, List<FieldSetting> fieldSettings)构造方法sheetName,fieldSettings可选参数
getSheetName()
setSheetName(String sheetName)
获取或设置Sheet名称
getFieldSettings()
setFieldSettings(List<FieldSetting> fieldSettings)
获取或设置字段配置

(3) TemplateExportPara  模板导出参数类

方法描述
TemplateExportPara(String dataSourceName, Object dataSource)构造方法
getDataSourceName()
setDataSourceName(String dataSourceName)
获取或设置数据源名称
isInserted()
setInserted(boolean isInserted)  
判断或设置是否插入行,
用于多表填充,上边的表填充不受下面表所占空间的影响
getDataDirection()  
setDataDirection(DataDirection dataDirection)  
获取或设置数据填充方向
isCopyCellStyle()   
setCopyCellStyle(boolean copyCellStyle)  
判断或设置是否复制单元格样式

(4) ExcelSetting 用于设置要清除的Sheet页

方法描述
ExcelSetting()构造方法
getRemovedSheets()
setRemovedSheets(List<String> removedSheets)
获取或设置要移除的Sheet

(5) FieldSetting  字段表头映射

方法描述
FieldSetting(String fieldName, String displayName)构造方法,
fieldName   实体类字段名称
displayName   Excel表头显示名称

getFieldName()

setFieldName(String fieldName)

获取或设置实体类字段名称

getDisplayName()

setDisplayName(String displayName)

获取或设置Excel表头显示名称

(6) AutoExcel  Excel导入或导出工具类
 

方法描述
read(String fileName, List<ImportPara> importParas)读取Excel数据

save(String templatePath, String outputPath, TemplateExportPara templateExportPara)
save(String templatePath, String outputPath, List<TemplateExportPara> templateExportParas)
save(String templatePath, String outputPath, List<TemplateExportPara> templateExportParas, ExcelSetting excelSetting)
save(String templatePath, String outputPath, List<TemplateExportPara> templateExportParas,

         Consumer<Workbook> actionAhead, Consumer<Workbook> actionBehind)

模板写入数据到Excel,
outputPath: 文件输出路径
templatePath; 模板路径
templateExportPara:模板输出Excel的数据

excelSetting:设置要删除的sheet

actionAhead: 预处理Workbook

actionBehind: 导入数据后处理Workbook

save(String outputPath, DirectExportPara directExportPara)
save(String outputPath, List<DirectExportPara> directExportParas)

直接写入数据到Excel,
outputPath: 文件输出路径

directExportPara:输出Excel的数据

 (7) ImportPara 数据导入参数类

方法描述
ImportPara(int sheetIndex, List<FieldSetting> fieldSettings, int titleIndex, int dataStartIndex)

构造方法

sheetIndex         必填,sheet索引

fieldSettings       必填,列名与字段名映射设置

titleIndex            可省略,标题行开始索引,默认为0

dataStartIndex   可省略,数据行开始索引,默认为1

getSheetIndex()

setSheetIndex(int sheetIndex)

获取或设置sheet索引

getTitleIndex()

setTitleIndex(int titleIndex)

获取或设置标题行开始索引

getDataStartIndex()

setDataStartIndex(int dataStartIndex)

获取或设置数据行开始索引

getFieldSettings()

setFieldSettings(List<FieldSetting> fieldSettings)

获取或设置列名与字段名映射设置

(8) DataSet Excel导入的数据集

方法描述

get(String key)

put(String key, List<Map<String, Object>> value)

获取或设置原始数据

get(int sheetIndex, Class<T> entityClass)

get(String sheetName, Class<T> entityClass)

获取数据

1.3 示例

(1) 模板导出

String templatePath = this.getClass().getResource("/autoExcel/template.xlsx").getPath();
String outputPath = "D:\\wordspace\\my_project\\apidemo\\src\\main\\resources\\autoExcel\\data.xlsx";
List<Student> list =new ArrayList<>();
list.add(new Student("2013010203",27, "小明", "男"));
list.add(new Student("2013010204",29, "小红", "女"));
List<TemplateExportPara> paras = new ArrayList<>();
TemplateExportPara para = new TemplateExportPara("student", list);
paras.add(para);//可添加多个数据源
AutoExcel.save(templatePath, outputPath, paras);

 (2) 直接导出

List<Student> list = new ArrayList<>();
list.add(new Student("2013010203", 27, "小明", "男"));
list.add(new Student("2013010204", 29, "小红", "女"));
List<DirectExportPara> paras = new ArrayList<>();
//定义字段,表头映射配置
List<FieldSetting> fieldSettings = new ArrayList<FieldSetting>();
fieldSettings.add(new FieldSetting("num", "学号"));
fieldSettings.add(new FieldSetting("name", "姓名"));
fieldSettings.add(new FieldSetting("age", "年龄"));
fieldSettings.add(new FieldSetting("sex", "性别"));
DirectExportPara para = new DirectExportPara(list,"sheet1", fieldSettings);
paras.add(para);//可导出多个sheet数据
AutoExcel.save(outputPath, paras);

 (3) 数据导入

//设置字段表头映射
List<FieldSetting> fieldSettings = new ArrayList<FieldSetting>();
fieldSettings.add(new FieldSetting("num", "学号"));
fieldSettings.add(new FieldSetting("name", "姓名"));
fieldSettings.add(new FieldSetting("age", "年龄"));
fieldSettings.add(new FieldSetting("sex", "性别"));
//设置数据导入参数
List<ImportPara> importParas = new ArrayList<ImportPara>();
importParas.add(new ImportPara(0, fieldSettings));//可设置多个sheet映射
DataSet dataSet = AutoExcel.read(outputPath, importParas);
List<Map<String, Object>> products = dataSet.get("student");
List<Student> students = dataSet.get(0, Student.class);

2. 模板语法

(1) 编写模板,设置名称用于数据填充

修改Excel单元格名称的方式有两种:

1. 公式-->名称管理器
2. 左上角下拉框 双击修改,回车保存

(2) 定义名称规则(所有名称均不区分大小写)

1. 数据源名称.字段名称[.合计类型],用于填充普通字段或普通字段的合计值(目前仅支持Sum和Avg),如:user.age.sum
2. 数据源名称.Formula.xxxx,用于填充公式,xxxx可为不重复的任意值,如:user.Formula.1
3. 数据源名称.RowNo,用于填充行号,如:user.RowNo

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑重其事,鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值