如何使用Excel文件中的数据作为数据源ASP.Net MVC App

时间:2019-05-01 17:26:39

标签: c# excel asp.net-mvc entity-framework

所以我知道这个问题似乎有点广泛,所以让我给出一些背景。在我工作的地方,我们的工程师使用这些巨大的Excel文件充满数据(物料清单,成本等账单),我正在寻找一种将这些文件用作数据源的好方法。我知道导入.xlsx与.csv文件需要更长的时间。具有某种正在运行的程序,该程序会定期将数据转换为csv文件,然后使用该文件作为数据源,是否有益?还是有办法使excel数据与数据库保持同步?

我不确定我的“选项”是什么。或者是否有更好的通用做法。我在创建程序时只使用数据库,但是不得不让工程师维护excel文件和数据库。

我已经看过的东西

Using LinqToSQL

Importing Excel Into Server

任何指针将不胜感激。

1 个答案:

答案 0 :(得分:1)

一些建议:

确保您的数据源隐藏在抽象的后面。例如,像IProductRepository之类的接口仅包含您需要与之交互的方法。该接口不应以任何方式暗示底层实现是什么。

这样,您的选择就不会“泄漏”到代码的其他部分。您将能够改变主意,而无需进行任何修改。其次,当您尝试创建其他实现时,您将预先了解它需要支持哪些方法。

以下是直接使用Excel作为数据源,而是定义自己的数据库的一些原因:

  • 如果Excel文件不是用于此目的,则它们可能会发生不可预测的变化,因此您的应用程序将无法运行。 (或更糟糕的是,它“可以工作”,但是使用了错误的列或工作表,并且数据看起来类似,并且暂时没有人注意。)如果您将Excel文件导入数据库,并且文件布局发生更改,它仍然会创建工作,但是工作将在您导入数据的时候进行,而不是在应用程序的其余部分。您要保留“易失”的内容,这些内容可能会与您代码的其他部分有所不同。
  • 一个合理的常见情况是,以后您还需要包括来自其他来源的数据。如果您的应用程序正在读取Excel,那么现在您必须弄清楚如何将数据从其他地方获取到Excel工作簿中。那是可行的,但一点也不有趣。如果您要从数据库中读取数据,则容易得多,而Excel只是数据进入数据库的一种方式。然后,将其他来源的数据包括进去要容易得多。

这两者都反映了我们的应用程序应该对其所依赖的事物拥有更多控制的想法。当您定义存储库接口时,您的应用程序会说无论实现是什么,它都必须符合此要求。创建自己的数据库是该原理的扩展。您可以控制数据存储,并且将数据放入其中的任何操作都必须符合该要求。您无法控制无法控制的内容,但是将其推离您要控制的部分更远,以限制更改后所需的工作。