Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以将Excel文件加载到内存中?_C#_Excel_Asp.net Mvc 2_Entity Framework 4 - Fatal编程技术网

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

C# 是否可以将Excel文件加载到内存中?,c#,excel,asp.net-mvc-2,entity-framework-4,C#,Excel,Asp.net Mvc 2,Entity Framework 4,我有一个网站,在那里企业可以装载物品出售。然后,最终用户可以搜索该商品,并找到所有携带该商品的商店 大多数商店卖的东西超过100件,虽然我有一个表格可以插入一件物品,但只有这个表格供商家提供东西是非常愚蠢的 我的想法是让企业可以选择上传excel文件,让我的ASP.Net应用程序从列中提取信息并填充类,然后使用Entity Framework 4 magic,我将一次性保存这些信息 做这件事时,我应该注意哪些陷阱? 这可能吗? 在我的服务器上这是一个非常繁重的过程(它会弄脏我的网站吗) 编辑:

我有一个网站,在那里企业可以装载物品出售。然后,最终用户可以搜索该商品,并找到所有携带该商品的商店

大多数商店卖的东西超过100件,虽然我有一个表格可以插入一件物品,但只有这个表格供商家提供东西是非常愚蠢的

我的想法是让企业可以选择上传excel文件,让我的ASP.Net应用程序从列中提取信息并填充类,然后使用Entity Framework 4 magic,我将一次性保存这些信息

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

编辑: 到目前为止,似乎为了解析XML文件,我需要安装Office。我不确定Winhost.com是否提供这种服务

另一个解决方案是使用CSV文件接收信息。秘书创建CSV文件有多容易,请记住,她可能是首先要创建该文件的人。这对一个电脑受损的人来说容易吗

我认为解析CSV很简单,但我希望关注用户体验,而不是让人们在我的网站上诅咒我让他们学到东西

编辑2:
完全忘了提到,当然我会提供一个模板供他们使用,假设他们会遵循表格布局是绝对愚蠢的。所以不要把这个问题考虑进去。我还意识到我必须验证每一列,这样他们就不会在价格字段中写“lolgei”之类的东西。

一些快速的想法

输入数据的验证将非常重要。因为这是一个自主的过程,你需要把它锁得很紧,这样用户就不会试图上传他们不应该上传的东西

运行office automation进程通常是一个麻烦的解决方案,它会在服务器部署中添加Microsoft office依赖项,如果可能的话最好避免,尤其是如果您打算在回发时运行此代码

更好的解决方案可能是为最终用户提供一个excel模板,该模板输出一个xml文件,然后可以上传。通过这种方式,处理和验证变得更加容易,并且消除了对服务器上Microsoft office的任何依赖。Excel内置了一些很好的xml特性。我个人会选择这种方法,而不是将工作簿本身发送到服务器

希望这有帮助


享受吧

设计一个管理页面,使许多项目可以一次输入,可能会有所帮助。我这样说是因为无论发生什么,用户都必须为每个项目设置关键帧,即使您发布了一个“标准”/空excel文件作为模板供他们输入数据,然后将其导入。

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

我也做过类似的事情。Doug是对的,办公自动化可能有点棘手,在这里并没有必要。简单的csv文件怎么样?很容易加载它们,它们是可解析的,并且很容易验证


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

我可以给出一个侧面的想法吗?如何为Excel工作表构建外接程序,您可以将其分发给客户?它可以处理所有必要的身份验证等,还可以按一下按钮,将信息发送到您的ASP.NET服务器(或者更好的是,您可以发布和订阅WCF服务)。当然,在这一点上,您不必担心将Excel格式转换为.NET可读格式-这一切都可以从插件前端按照您的意愿进行格式化,无论是XML序列化对象、csv还是其他


就我的0.02美元…

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

我以前也做过类似的导入,但请注意jet提供商会耗尽连接


我最终选择了csv解析。

首先要担心的是用户将要提供的各种演示文稿。您可能应该给他们一个模板,但即使如此,用户还是会以非常有创意的方式把事情搞糟


不要使用自动化来读取Excel文件。它不受支持,总有一天会停止工作。让用户上传xlsx文件,并使用OpenXMLSDK提取数据。

FWIW,过去我对电子表格设备印象深刻。这对您将要进行的验证没有多大帮助,但您可能会发现这是一种更容易处理数据的方法。

虽然您所说的一切都是真实的,但我必须确保创建上述产品列表的过程尽可能简单,以便企业创建它们。记住,可能是秘书创建了这个文件。她会知道什么是CSV吗?我没想过企业会通过上传完整的产品列表来更新产品信息。我会考虑到这一点,但现在我只允许他们提供的每个产品都有一个编辑页面