【问题标题】:Is it possible to load an Excel file to memory?是否可以将 Excel 文件加载到内存中?
【发布时间】:2010-07-30 21:26:16
【问题描述】:

我有一个网站,企业可以在其中加载待售商品。然后最终用户可以搜索该商品,并找到所有出售该商品的商店。

大多数商店出售超过 100 件商品,虽然我确实有一个用于插入单个商品的表格,但只有这个供企业提供商品是非常愚蠢的。

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

在执行此操作时我应该注意哪些陷阱? 这可能吗? 这对我的服务器来说是一个非常繁重的过程(它会破坏我的网站)吗?

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    一些快速的想法......

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

    运行办公自动化流程通常是一个繁琐的解决方案,它会将 Microsoft Office 依赖项添加到您的服务器部署中,如果可能的话最好避免,尤其是如果您打算在回发时运行此代码。

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

    希望这会有所帮助..

    享受吧!

    【讨论】:

      【解决方案2】:

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

      也许可以训练秘书以正确的格式创建 Excel 表格。将该工作表保存为 CSV 文件是一项简单的任务(文件->另存为->csv)。

      【讨论】:

      • 虽然您所说的一切都是真实的,但我必须确保创建所述产品列表的过程尽可能简单,以便企业创建它们。请记住,创建此文件的可能是一位秘书。她会知道 CSV 是什么吗?
      【解决方案3】:

      FWIW,过去我对 SpreadsheetGear 印象深刻。这对您必须进行的验证没有太大帮助,但您可能会发现这是处理数据的一种更简单的方法。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 我还没有想过企业通过上传完整的产品列表来更新产品信息。我会考虑到这一点,但现在我只允许他们提供的每个产品使用单个编辑页面。
        【解决方案5】:

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

        就我的 0.02 美元……

        【讨论】:

        • 感谢您的输入,但我在 Excel 编程方面的经验为零。我只知道如何给表格一个边框,仅此而已。我不想为如此微不足道的事情(在大局中)投资新技术。
        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

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

            我以前做过这样的导入,但要注意喷气式飞机供应商会吃掉连接。

            Help me find the leak in this excel import code

            我最终改为使用 csv 解析。

            【讨论】:

            • 我不知道你在说什么。你正在谈论做我计划做的完全相同的事情。这个答案的意义何在?
            • 请阅读您的问题 - 您没有说明 excel 文件内容首先填充数据库。 “从列中提取信息并填充类”
            猜你喜欢
            • 1970-01-01
            • 2015-10-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-07-27
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多