# garlicts-excel **Repository Path**: garlicts/garlicts-excel ## Basic Information - **Project Name**: garlicts-excel - **Description**: excel导入导出,支持excel自定义错误信息 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2018-11-01 - **Last Updated**: 2021-09-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # garlicts-excel #### 项目介绍 excel导入导出,支持excel自定义错误信息,准备上传 #### 软件架构 软件架构说明 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. 创建实体 ``` import java.math.BigDecimal; import java.util.Date; import com.garlicts.excel.GarlictsExcelEntity; import com.garlicts.excel.ExcelField; public class OrderImportEntity extends GarlictsExcelEntity { @ExcelField(name="客户") // 客户名称 private String consignerName; @ExcelField(name="发货时间") // 发货时间 private Date deliveryTime; @ExcelField(name="收货时间") // 收货时间 private Date arriveTime; @ExcelField(name="运输费") // 运输费 private BigDecimal freightFee; @ExcelField(name="回单数量") // 回单数量 private Integer receiptCount; } ``` 2. 自定义excel导入校验 ``` import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.regex.Pattern; public class GarlictsExcelVerifyHandler implements com.garlicts.excel.GarlictsExcelVerifyHandler { public GarlictsExcelVerifyHandler() { } @Override public Map verify(OrderImportEntity obj, int currRowNum, Map fieldMap, Map fieldColumnMap) throws Exception { Map errorMap = new HashMap(); // 客户名称 String consignerName = obj.getConsignerName(); if(Objects.equals(consignerName, null)) { Integer columnNum = fieldColumnMap.get("consignerName"); errorMap.put(currRowNum+"_"+columnNum, "客户名称未填写"); }else { if(consignerName.length() > 20) { Integer columnNum = fieldColumnMap.get("consignerName"); errorMap.put(currRowNum+"_"+columnNum, "客户名称过长,超过20位"); } } return errorMap; } } ``` 3. 导入excel ``` GarlictsExcel garlictsExcel = null; try { garlictsExcel = new GarlictsExcel(inputStream, 3, new GarlictsExcelVerifyHandler()); } catch (Exception e) { e.printStackTrace(); } GarlictsImportResult garlictsImportResult = garlictsExcel.importExcel(OrderImportEntity.class); boolean headerRowVerify = garlictsImportResult.getHeaderRowVerify(); if(!headerRowVerify) { logger.error("导入的excel标题行不合法"); return; } // 如果校验错误,生成带错误提示的excel,以供用户下载 String errorExcel = ""; if(!errorMap.isEmpty()) { garlictsExcel.exportExcel(garlictsImportResult.getDataList(), errorExcel); } ``` 4. 错误导出的效果 ![输入图片说明](https://images.gitee.com/uploads/images/2018/1101/214446_be124caf_592654.png "1.png") #### 参与贡献 1. Fork 本项目 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)