2012-02-08 64 views
0

我在努力说服自己哪个想法更好。任何意见将是有益的。这里是故事:Excel加载项数据验证

我有一个excel工作表,充满项目,每行代表一个项目。我需要验证数据以检查有效性。当且仅当该项目的每个数据元素都有效时,项目才有效。也有一些人在项目上工作。可能有很多人在一个项目上工作(假设一个人只能在一个项目上工作)。因此,对于每个人,我需要验证它是一组字段,并确保它所引用的项目确实存在。在所有事情都得到验证之后,我会将项目和人员推送到数据库。

要考虑的另一件事,可以有成千上万的项目。凭借这种美德,还可以有更多的成千上万的人。

我心里有两个验证技术:

  1. 使项目和对象的人对自己负责的数据验证。这意味着我将不得不在验证时创建对象,然后在全部验证后再推送它们。我不认为将这些许多对象存储在内存中以验证并稍后推送是可行的。
  2. 使用单独的函数来验证数据。该功能只会查看数据,确定其类型,并确保它符合约束 - 无论它属于某个人还是项目。这避免了创建的项目和人员对象,但这也意味着我必须再次传递数据来创建这些对象。这也意味着如果我添加另一个字段到项目中,我必须添加另一个相应的部分到验证器功能。

回答

0

绝对数字1.创建几千个对象就可以了。你可能已经完成了一段内存的工作,这是相当多的:)只是保持你的对象尽可能小,它会没事的。

如果是我,我甚至不会打扰写它作为一个VSTO excel插件 - 我会写一个单独的ASP.NET网页,他们可以上传他们的Excel文件。从那里你可以解析它,验证它并将它插入你的数据库。只是吐出一个“失败的单元格X因为Y缺少”消息。如果您将它作为加载项编写,那么您需要有人将其安装到所有用户计算机上,并且需要推出并更新任何错误修复程序,这将成为PITA。如果你真的需要做一些聪明的excel交互,我只会走下VSTO路线。