easyExcel excel导入导出

使用EasyExcel 导入导出Excel

能够实现「导入/导出 Excel」的第三方常用类库有 Apache poi、Java Excel(JXL)和阿里巴巴开源的 Easyexcel 等等。
github地址:https://github.com/alibaba/easyexcel

1.EasyExcel所需要的jar包

easyexcel本身就是在poi技术基础上修改的,easyexcel本身所依赖的jar包也需要导入工程中。

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>easyexcel</artifactId>
	<version>2.0.5</version>
</dependency>

2.导入

2.1 定义一个实体类(UploadDataPO),对应导入excel中的每一条记录

public class UploadDataPO {
	// value: 导入列名称,index:导入列位置。
    // 自增主键
	@ExcelProperty(index = 0 , value = "id")
    private int    id;
    // 字段类型
	@ExcelProperty(index = 1 , value = "字段类型")
    private String type;

2.2 定义Control层接口

调用MyEasyExcel的read方法。

    @RequestMapping("/import")
    public String importExcel(MultipartHttpServletRequest request) throws IOException {
    	// 使用了element ui的导入文件控件。前台传入的名称是:fileToUpload。
    	MultipartFile file = request.getFile("fileToUpload");
    	// 参数1:文件对象的输入流,参数2:读入excel一行所对应的实体类,参数3:Service层类,参数4:excel的sheet下标,参数4:sheet的名字
        MyEasyExcel.read(file.getInputStream(), UploadDataPO.class, new UploadDAO<UploadDataPO>(), 0, null);
        return "sucess";
    }

2.3 定义DAO层业务

定义UploadDAO类继承 MyEasyExcelDAO类
在saveData方法中对导入的数据进行数据库的插入操作

@Service
public class UploadDAO<T> implements MyEasyExcelDAO<T> {

	@Override
	public void saveData(List<T> list) {
        // 如果是mybatis,尽量别直接调用多次insert,自己写一个mapper里面新增一个方法batchInsert,所有数据一次性插入
	}
}

导出

3.1 定义导出实体类(DownloadDataPO),对应导出excel中的每一条记录。

注解:@ContentRowHeight(10),定义行高。
注解:@HeadRowHeight(20),定义标题行高。
注解:@ColumnWidth(25),定义列宽。
注解:@ExcelProperty(index = 0 , value = “id”),定义导出列名和列的位置。

@ContentRowHeight(10)
@HeadRowHeight(20)
@ColumnWidth(25)
public class DownloadDataPO {
	// 自增主键
	@ExcelProperty(index = 0 , value = "id")
	private int id;
	// 字段类型
	@ColumnWidth(50)
	@ExcelProperty("字段类型")
	private String type;
	// 字段编号
	@ExcelProperty("字段编号")
	private String itemCode;

3.2 定义DAO层接口

调用MyEasyExcel的write方法。

    @RequestMapping("/downloadtest")
    public void download(HttpServletRequest request, HttpServletResponse response) throws IOException {
    	// 参数1:response对象     2:读入excel一行所对应的实体类,参数3:Service层类,参数4:excel的sheet下标。
        MyEasyExcel.write(response, DownloadDataPO.class, new DownloadDAO<DownloadDataPO>(), 0, null, "测试");
    }

3.3 定义DAO层业务

定义DownloadService类继承 MyEasyExcelDAO类
在getData中获取需要导出的数据,easyExcel会将这些数据放入导出的excel表中。

@Service
public class DownloadDAO<T> implements MyEasyExcelDAO<T> {

	@Override
	public List<T> getData() {
		// 这里定义需要导出的数据list
		return null;
	}
}

你可能感兴趣的:(Java)