2012-02-08 42 views
0

我在努力說服自己哪個想法更好。任何意見將是有益的。這裏是故事:Excel加載項數據驗證

我有一個excel工作表,充滿項目,每行代表一個項目。我需要驗證數據以檢查有效性。當且僅當該項目的每個數據元素都有效時,項目纔有效。也有一些人在項目上工作。可能有很多人在一個項目上工作(假設一個人只能在一個項目上工作)。因此,對於每個人,我需要驗證它是一組字段,並確保它所引用的項目確實存在。在所有事情都得到驗證之後,我會將項目和人員推送到數據庫。

要考慮的另一件事,可以有成千上萬的項目。憑藉這種美德,還可以有更多的成千上萬的人。

我心裏有兩個驗證技術:

  1. 使項目和對象的人對自己負責的數據驗證。這意味着我將不得不在驗證時創建對象,然後在全部驗證後再推送它們。我不認爲將這些許多對象存儲在內存中以驗證並稍後推送是可行的。
  2. 使用單獨的函數來驗證數據。該功能只會查看數據,確定其類型,並確保它符合約束 - 無論它屬於某個人還是項目。這避免了創建的項目和人員對象,但這也意味着我必須再次傳遞數據來創建這些對象。這也意味着如果我添加另一個字段到項目中,我必須添加另一個相應的部分到驗證器功能。

回答

0

絕對數字1.創建幾千個對象就可以了。你可能已經完成了一段內存的工作,這是相當多的:)只是保持你的對象儘可能小,它會沒事的。

如果是我,我甚至不會打擾寫它作爲一個VSTO excel插件 - 我會寫一個單獨的ASP.NET網頁,他們可以上傳他們的Excel文件。從那裏你可以解析它,驗證它並將它插入你的數據庫。只是吐出一個「失敗的單元格X因爲Y缺少」消息。如果您將它作爲加載項編寫,那麼您需要有人將其安裝到所有用戶計算機上,並且需要推出並更新任何錯誤修復程序,這將成爲PITA。如果你真的需要做一些聰明的excel交互,我只會走下VSTO路線。