赞
踩
能够实现「导入/导出 Excel」的第三方常用类库有 Apache poi、Java Excel(JXL)和阿里巴巴开源的 Easyexcel 等等。
github地址:https://github.com/alibaba/easyexcel
easyexcel本身就是在
poi
技术基础上修改的,easyexcel本身所依赖的jar包也需要导入工程中。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.0.5</version>
</dependency>
public class UploadDataPO {
// value: 导入列名称,index:导入列位置。
// 自增主键
@ExcelProperty(index = 0 , value = "id")
private int id;
// 字段类型
@ExcelProperty(index = 1 , value = "字段类型")
private String type;
调用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";
}
定义UploadDAO类继承 MyEasyExcelDAO类
在saveData方法中对导入的数据进行数据库的插入操作
@Service
public class UploadDAO<T> implements MyEasyExcelDAO<T> {
@Override
public void saveData(List<T> list) {
// 如果是mybatis,尽量别直接调用多次insert,自己写一个mapper里面新增一个方法batchInsert,所有数据一次性插入
}
}
注解:@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;
调用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, "测试");
}
定义DownloadService类继承 MyEasyExcelDAO类
在getData中获取需要导出的数据,easyExcel会将这些数据放入导出的excel表中。
@Service
public class DownloadDAO<T> implements MyEasyExcelDAO<T> {
@Override
public List<T> getData() {
// 这里定义需要导出的数据list
return null;
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。