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) Consumer<Workbook> actionAhead, Consumer<Workbook> actionBehind) | 模板写入数据到Excel, excelSetting:设置要删除的sheet actionAhead: 预处理Workbook actionBehind: 导入数据后处理Workbook |
save(String outputPath, DirectExportPara directExportPara) | 直接写入数据到Excel, 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