我要求客户上传包含数千行的电子表格。 一行中不同的列具有不同的数据类型,并且数据必须符合某些验证规则。例如。
下面的是一个示例文件结构:
(Header - Colume_name,Variable_type,field_size,i/p mask,required_field,validation_Text)
(P/N,String,20,none,yes,none)
(qty,Integer,10,none,yes,none)
(Ship_From,String,20,none,yes,none)
(Request_Date,Date,MM/DD/YY ,yes,none)
(Status,String,10,none,yes,Failed OR Qualified)
在阅读xl表时,我需要根据上述约束验证数据,如果数据有任何错误, 我需要存储错误并通知客户。
请让我知道保持系统性能的最佳方法。
非常感谢任何早期回复。
谢谢, Ashish Gupta
答案 0 :(得分:2)
如果我理解您的问题,您希望阅读验证规则文件,例如上面的示例。您想编译规则,以便他们读取大型Excel电子表格(或者它是CSV文件?),并且可能为每行被视为无效的行打印出一条消息。
这似乎是一个两遍过程: 1)验证和编译验证文件和2)编译第1版的输出并将其应用于Excel文件。
您可以通过多种方式进行现场验证,具体取决于您的技能和倾向。
您在代码上标明了POI
,因此我认为您需要生成Java代码。
当然,您也可以编写一次性程序来完成所有这些元编译和编译,但这将是一个脆弱的过程。
如果您可以自由指定验证文件,则可能需要将其设置为.XSD文件,因为有自动化工具可以使其扫描更加简单。有一些工具可以确定XML文件是否有效,以及可以将其转换为Java的编译器。
(当我阅读你的验证文件时,我想到了一个想法。你将如何将一个部分与另一个部分分开?例如,如果你在P/N, Qty, Request_Date, Ship_From, Status, P/N
中读到,那是一部分有两个P / N还是一个完整的零件和一个缺少几个必要零件?)
答案 1 :(得分:1)
我的第一个想法是让Excel做这个验证,因为Rajah似乎也在暗示。内置功能和/或VBA应该能够满足这些要求。 如果你需要在Java中处理这个问题,我会选择XML方法。
干杯, 维姆
答案 2 :(得分:0)
我听说有一位朋友使用JBOSS DROOLS验证他的电子表格:http://www.jboss.org/drools
答案 3 :(得分:0)
我有一个基于POI的基于XML的excel验证器。 您只需要在excel中指定需要验证的数据,java api就会进行验证&如果无效,则返回错误消息。
例如:
< data rowNumber =“2”columnNumber =“2”dataType =“string”> < mandatory errorMessage =“缺少名称标签”> Y. < value ignoreCase =“true”errorMessage =“名称标签值不匹配。”>名称< / value>
以上是对纯文本字段的简单验证,它还有其他验证,如果您有兴趣请告诉我?