是否可以将Excel文件加载到内存中?

时间:2010-06-25 15:47:08

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

我有一个网站,商家可以在其中加载待售商品。然后,最终用户可以搜索该项目,并查找携带该项目的所有商店。

大多数商店出售超过100件商品,虽然我有一个表格可以插入单件商品,但只有这样才能让商家提供商品。

我的想法是为企业提供上传excel文件的选项,让我的ASP.Net应用程序从列中提取信息并填充类,然后使用Entity Framework 4魔法我将一举保留这些信息

在做这件事时我应该注意哪些陷阱? 这可能吗? 这在我的服务器上是一个非常繁重的过程(它会破坏我的网站)吗?

修改 到目前为止,为了让我解析XML文件,我需要安装Office。我不确定Winhost.com是否提供此功能。

另一种解决方案是使用CSV文件接收信息。秘书创建CSV文件有多容易,记住她可能是首先要创建文件的人。对于计算机受损的人来说,这很容易创建吗?

我认为解析CSV将是微不足道的,但我希望专注于用户体验,而不是让人们诅咒我的网站让他们学习东西。

编辑2: 完全忘记提及,当然我将提供一个供他们使用的模板,假设他们将遵循表格布局绝对是愚蠢的。所以不要考虑这个问题。我也知道我必须验证每一栏,所以他们不会在价格字段中写“lolgei”或类似的东西。

8 个答案:

答案 0 :(得分:2)

一些敏捷的想法......

输入数据的验证将非常重要。由于这是一个自治过程,因此您需要将其锁定得非常紧,这样用户就不会尝试上传他们不应该的内容。

运行办公自动化流程通常是一个麻烦的解决方案,在您的服务器部署中添加了Microsoft Office依赖关系,如果可能的话,最好避免使用,尤其是如果您的目的是在帖子后面运行此代码。

更好的解决方案可能是为最终用户提供一个excel模板,该模板会输出一个可以上传的xml文件。这样,它更容易处理,更容易验证,并消除了对服务器上的Microsoft Office的依赖。 Excel有一些很好的xml功能。我个人会选择这种方法而不是将工作簿本身发送到服务器。

希望这会有所帮助..

享受!

答案 1 :(得分:1)

我做了类似的事情。道格是对的,Office自动化可能有点棘手,在这里并不是必需的。简单的csv文件怎么样?它很容易加载,它们是可解析的,并且可以很容易地进行验证。

秘书可能会接受培训,以正确的格式创建Excel工作表。将该工作表另存为CSV文件是一项简单的任务(文件 - >另存为> csv)。

答案 2 :(得分:1)

FWIW,过去我对SpreadsheetGear印象非常深刻。这对您将要进行的验证无济于事,但您可能会发现这是处理数据的更简单方法。

答案 3 :(得分:0)

当我这样做时,我使用CSV文件而不是XLS文件,因为CSV文件在服务器端更容易解析。用户上传文件后,下一步是验证数据并显示任何错误或警告。如果用户可以通过导入过程更新现有记录,则会变得更加复杂。然后,您的代码必须能够在2个数据存储之间进行同步,而不仅仅是批量插入记录。

答案 4 :(得分:0)

我能提出一个侧面思考吗?如何为Excel工作表构建加载项,您可以将其分发给您的客户?它可以处理所有必需的身份验证等,并且只需按一下按钮,就可以将信息发送到您的ASP.NET服务器(或者更好的是WCF服务,然后您可以使用pub& sub)。当然,在这一点上,您不必担心将Excel格式转换为.NET可读格式 - 这可以根据内容的需要从加载项前端格式化,无论是XML序列化对象,csv,不管。

价值0.02美元......

答案 5 :(得分:0)

首先要担心的是用户将要提出的各种演示文稿。你可能应该给他们一个模板,但即使如此,用户也会以非常有创意的方式搞砸了。

请勿使用自动化来读取Excel文件。它没有得到支持,有一天它会停止工作。让用户上传xlsx文件,并使用OpenXML SDK提取数据。

答案 6 :(得分:-1)

设计管理页面可能会有所帮助,以便可以立即输入许多项目。我这样说是因为无论如何,用户都必须键入每个项目,即使您发出“标准”/空的Excel文件作为模板,他们也可以输入数据,然后导入。

答案 7 :(得分:-1)

我不明白你为什么要从excel文件中填充对象。为什么不创建一个例程来允许客户上传excel文件,解析它,并将多个项目插入现有数据库?看来你已经有了一个架构。你想要的方法似乎过于复杂。

之前我已经完成了这样的进口,但要注意喷气机供应商会吃掉连接。

Help me find the leak in this excel import code

我最终选择了csv解析。