当前位置:   article > 正文

easypoi基本使用

easypoi

目录

1 easypoi相关注解

2 easypoi的导出

 2 easypoi的导入


1 easypoi相关注解

        @Excel 作用到field上,是对Excel一列的一个描述

        @ExcelCollection 表示一个集合,主要针对一对多的导出

        @ExcelEntity 表示一个继续深入导出的实体,但没太多实际意义,只是告诉系统这个对象里面有通样导出的字段

        @ExcelIgnore 和名字一样表示这个字段被忽略导出过程

        @EcxelTarget 这个是作用于最外层的对象,描述这个对象的id,支持这个对象可以针对不同的导出做出不同处理

@Excel注解相关属性 :

        用在field属性上面,是对于excel的一个描述

name:[String]生成excel表中的列名

needMerge: [boolean]是否需要纵向合并单元格

orderNum:[String]用于指定Excel列中的顺序

savepath:【String】指定导出excel中图片的保存路径

type: 【String】导出类型 1文本 2图片 3函数 4数字 ,默认是文本

width: 【Double】指定导出excel列的宽度

isImportField:【boolean】 是否是导入的字段,如果没有说明是错误的excel

exportFormat:【String】导出excel的时间格式

importFormat:【String】导入excel的时间格式

format:【String】 相当于同时设置了exportFormat和importFormat

imageType:【int】导出类型 1从filed读取 2是从数据库中读取 默认是文件

suffix:【String】文字后缀,如%98变为98%

2 easypoi的导出

模拟将一个集合对象到处到excel表格中

User类:

  1. @ExcelTarget("users")
  2. public class User implements Serializable {
  3. @Excel(name = "编号")
  4. private Integer id;
  5. @Excel(name = "姓名")
  6. private String name;
  7. @Excel(name = "年龄",suffix = "*") //在列的后面加上"*"
  8. private Integer age;
  9. @Excel(name = "生日",width = 35.0,format = "yyyy-MM-dd")
  10. private Date bir;
  11. @Excel(name = "状态",replace = {"未删除_1","删除_0"}) //用"未删除替换1"
  12. private String status;
  13. public Integer getId() {
  14. return id;
  15. }
  16. public void setId(Integer id) {
  17. this.id = id;
  18. }
  19. public String getName() {
  20. return name;
  21. }
  22. public void setName(String name) {
  23. this.name = name;
  24. }
  25. public Integer getAge() {
  26. return age;
  27. }
  28. public void setAge(Integer age) {
  29. this.age = age;
  30. }
  31. public Date getBir() {
  32. return bir;
  33. }
  34. public void setBir(Date bir) {
  35. this.bir = bir;
  36. }
  37. public String getStatus() {
  38. return status;
  39. }
  40. public void setStatus(String status) {
  41. this.status = status;
  42. }
  43. }

测试类:

  1. /**
  2. * 模拟数据库中的数据
  3. * @return
  4. */
  5. public List<User> getUsers(){
  6. List<User> users = new ArrayList<>();
  7. for (int i = 0; i < 5; i++) {
  8. User user = new User();
  9. user.setId(i);
  10. user.setName("小王"+i);
  11. user.setAge(i);
  12. user.setBir(new Date());
  13. if(i%2 == 0){
  14. user.setStatus("1");
  15. }else {
  16. user.setStatus("0");
  17. }
  18. users.add(user);
  19. }
  20. return users;
  21. }
  22. @Test
  23. public void testExport() throws Exception{
  24. //获取数据
  25. List<User> users = getUsers();
  26. //导出excel
  27. //参数1:ExportParams导出配置对象 参数2:导出的类型 参数3:导出的数据集合
  28. Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("用户信息列表", "用户信息"), User.class, users);
  29. //将excel写入指定位置
  30. FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\LiuBuJun\\Desktop\\预约信息表格\\aa.xls");
  31. workbook.write(fileOutputStream);
  32. fileOutputStream.close();
  33. workbook.close();
  34. }

测试结果:

注意:

 2 easypoi的导入

我们将我们刚刚导出的数据再次导入让其输出:

实体类:

  1. @ExcelTarget("emps")
  2. public class Emp {
  3. @Excel(name = "编号")
  4. private Integer id;
  5. @Excel(name = "姓名")
  6. private String name;
  7. @Excel(name = "年龄",suffix = "*") //在列的后面加上"*"
  8. private Integer age;
  9. @Excel(name = "生日",width = 35.0,format = "yyyy-MM-dd")
  10. private Date bir;
  11. @Excel(name = "状态",replace = {"未删除_1","删除_0"}) //用"未删除替换1"
  12. private String status;
  13. public Integer getId() {
  14. return id;
  15. }
  16. public void setId(Integer id) {
  17. this.id = id;
  18. }
  19. public String getName() {
  20. return name;
  21. }
  22. public void setName(String name) {
  23. this.name = name;
  24. }
  25. public Integer getAge() {
  26. return age;
  27. }
  28. public void setAge(Integer age) {
  29. this.age = age;
  30. }
  31. public Date getBir() {
  32. return bir;
  33. }
  34. public void setBir(Date bir) {
  35. this.bir = bir;
  36. }
  37. public String getStatus() {
  38. return status;
  39. }
  40. public void setStatus(String status) {
  41. this.status = status;
  42. }
  43. @Override
  44. public String toString() {
  45. return "Emp{" +
  46. "id=" + id +
  47. ", name='" + name + '\'' +
  48. ", age=" + age +
  49. ", bir=" + bir +
  50. ", status='" + status + '\'' +
  51. '}';
  52. }
  53. }

 测试类:

  1. @Test
  2. public void testImport() throws Exception{
  3. ImportParams params = new ImportParams();
  4. params.setTitleRows(1);//标题占几行 告诉熊哪行开始读取
  5. params.setHeadRows(1);//header占几行
  6. //params.setStartSheetIndex(2);从第一个sheet开始读物,默认是1
  7. List<Emp> emps = ExcelImportUtil.importExcel(new FileInputStream("C:\\Users\\LiuBuJun\\Desktop\\预约信息表格\\aa.xls"), Emp.class, params);
  8. emps.forEach(System.out::println);
  9. }

测试结果:

由此可见easypoi相比apach的poi而言还是较为方便的。包含了许多功能,有时间再继续验。

        另外在说一下最近遇到的小问题,就是可能公司与第三方合作的时候,他们会发送表格数据来让我们排查问题,这个时候我们得根据excel表格中的某一列中的数据数据去我们数据库中做一个in查询,但是当表格中的数据量太大时,我们将列中国的数据一个粘贴复制太费事费力。

换句话说就是将表格中元素用单引号引起来并且用逗号隔开、

代码如下:

  1. @Test
  2. public void testImport() throws Exception{
  3. ImportParams params = new ImportParams();
  4. params.setTitleRows(1);//标题占几行 告诉熊哪行开始读取
  5. params.setHeadRows(1);//header占几行
  6. //params.setStartSheetIndex(2);从第一个sheet开始读物,默认是1
  7. List<Emp> emps = ExcelImportUtil.importExcel(new FileInputStream("C:\\Users\\LiuBuJun\\Desktop\\预约信息表格\\aa.xls"), Emp.class, params);
  8. StringBuffer buffer = new StringBuffer();
  9. String collect = emps.stream().map(emp -> "\'" + emp.getAge() + "\'").collect(Collectors.joining(","));
  10. System.out.println(collect);
  11. }

测试结果:

着样的话我们就不用一个个粘贴复制excel表格中的数据了。有关poi使用链接:poi导入/导出_set sail_2021的博客-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/540296
推荐阅读
相关标签
  

闽ICP备14008679号