hellojavaer / poi-excel-utils

poi-excel-utils makes the conversion between excel file data and java bean easy
Apache License 2.0
59 stars 28 forks source link

Excel中对应字段非空校验和业务逻辑校验,在哪个抽象方法中处理比较合适,开始先入为主的认为放在beforeProcess中处理比较合适,事实证明我错了,翻遍了demo,没发现最佳实践 #4

Closed chuyuanlinzi closed 5 years ago

chuyuanlinzi commented 5 years ago

如题,我在beforeProcess中进行字段校验,发现dataList根本没有数据,查代码,发现beforeProcess的调用在setDataList之前,所以只能放弃,求其次只能放到process方法中了,但总感觉怪怪的,难道beforeProcess不应该是在process处理数据之前做的前置工作吗?

hellojavaer commented 5 years ago

Hi 抱歉刚看到你提的问题,首先由于Excel.read(或者Excel.write)一次可以处理流中的多个sheet,设计beforeProcess和afterProcess主要是给用户提供一个’时机‘: 可以在操作sheet的前或后做其他准备操作(比如记录日志已经开始(或结束)读(或写)某个sheet);其次’非空校验‘可以参考demo01中的 fieldMapping.put("A", "byteField").setRequired(true).setLinkField("url");; 对输入的校验可以通过 ExcelReadCellProcessor 或 ExcelReadRowProcessor进行,如果【校验不通过】可以直接抛出异常,ExcelUtils会将异常最终封装成 ExcelReadException,该异常类中包含业务校验失败的行和列信息,你可以将这个信息返回给用户,方便他们定位具体是哪行(哪类)的具体问题。

更多的demo示例参考: https://github.com/hellojavaer/poi-excel-utils/tree/master/src/test/java/org/hellojavaer/poi/excel/utils 直观的操作示例:https://github.com/hellojavaer/poi-excel-utils/wiki