【问题标题】:import excel file and Comparing two table for duplicate numbers导入excel文件并比较两个表的重复数字
【发布时间】:2018-10-25 18:44:57
【问题描述】:

所以我正在做这个项目

基本上我有一个只有雇主“注册号”(主键)的 excel 文件,我必须上传到数据库但是 有时某些雇主的雇主注册号会因错误而重复,当有人尝试将此文件上传到数据库时会导致问题

点击上传后我需要做什么上传excel文件(我猜是做一个新表) 它应该给我,excel文件中有多少雇主注册号(计算行),有多少雇主注册号重复(将原始表与新表进行比较,查找是否有重复),以及有多少非重复

这个问题我不知道该怎么做

我正在使用什么:c#/asp.net - 实体框架 - Visual Studio 2012 - sql server 2012

【问题讨论】:

  • 如所写,您的问题过于宽泛。请提出一个有针对性的问题,并向我们展示您尝试过哪些无效的方法。 stackoverflow.com/help/how-to-ask
  • 您使用的是 XLS 还是 XLSX 文件?如果您使用的是 XLSX 文件,则可以使用 Nuget Package EPpLus 打开并读取 xls 文件。如果您使用的是 XLS 文件,则可以使用 Nuget Package NPOI(我不喜欢这个)。 github.com/JanKallman/EPPlusarchive.codeplex.com/?p=npoi
  • 为什么不创建一个 Excel 电子表格来显示这个?
  • 我明白了,我什么都没尝试,但还在想怎么做,我正在使用 XLSX
  • 我认为最简单的方法是安装 VS Data 工具并为此使用 SSIS(Sql Server 集成服务)。

标签: c# asp.net sql-server excel visual-studio-2012


【解决方案1】:

我真的建议你为此做一个流程。 我们如何创建数据流?
与 SSIS。
如果您通常必须将文件导入数据库,请使用 SSIS,以便处理所有错误。

在 SSIS 中,您可以使用 Excel Source 和 OLEDB Destinaion 来导入数据。然后您可以处理错误并将它们导入另一个表。
所以没有必要加入表格并做所有这些事情来比较它们。
SSIS 一点也不难使用

【讨论】:

    【解决方案2】:

    我认为首先你应该通过任何你想要的库读取 excel 文件(例如查看this samples),然后在发送到数据库之前将其更改为数据表或 RAM 中的列表。

    那么您必须找到用户使用 Linq 或其他方式错误输入的重复值。例如:

    var duplicateKeys = list.GroupBy(x => x)
                        .Where(group => group.Count() > 1)
                        .Select(group => group.Key);
    

    最后你可以将你的 uniqe 数据发送到数据库。

    【讨论】:

      猜你喜欢
      • 2020-10-17
      • 1970-01-01
      • 2021-03-02
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多