代码之家  ›  专栏  ›  技术社区  ›  Sergio Tapia

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

  •  0
  • Sergio Tapia  · 技术社区  · 15 年前

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

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

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

    这可能吗?

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

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

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

    8 回复  |  直到 15 年前
        1
  •  2
  •   Doug    15 年前

    一些快速的想法。。。。

    运行office自动化进程通常是一个麻烦的解决方案,它会给服务器部署添加一个microsoftoffice依赖项,如果可能的话最好避免,特别是如果您的目的是在后台运行此代码的话。

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

    希望这有帮助。。

    好好享受!

        2
  •  1
  •   Tobias    15 年前

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

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

        3
  •  1
  •   D. Lambert    14 年前

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

        4
  •  0
  •   David    15 年前

        5
  •  0
  •   code4life    15 年前

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

        6
  •  0
  •   bmm6o    15 年前

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

        7
  •  -1
  •   andyortlieb    15 年前

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

        8
  •  -1
  •   Community CDub    8 年前

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

    我以前也做过类似的导入,但是要小心jet提供商会耗尽连接。

    Help me find the leak in this excel import code

    我最终选择了csv解析。