【问题标题】:How to compare two excel sheets and create new one in c#?如何比较两个excel表并在c#中创建一个新表?
【发布时间】:2013-05-11 17:19:25
【问题描述】:

我有两个 excel 文件。
sheet1 有 5 列值。
sheet2 只有一列。
sheet1 和 sheet 的第一列具有一些唯一值。 我需要另一个excelsheet,其中新的有 5 列(sheet1 和 sheet2 中的唯一值匹配) 如何使用C# 执行此操作?
任何帮助将不胜感激。

【问题讨论】:

    标签: c# excel


    【解决方案1】:

    您可以通过使用 Interop.Excel (Interop C# tutorial) 或 Interop 的其他替代方法 (f.e. ClosedXML) 来完成此操作。 读入文件并使用 LINQ 获取您需要的数据。使用 IEnumerable.Except 您可以只从 sheet1 中获取不在 sheet2 中的元素并将其放入新工作表并将其保存到 Excel 文件中。

    var workbook1 = new XLWorkbook(@"workbook1.xlsx");
    var workbook2 = new XLWorkbook(@"workbook2.xlsx");
    var worksheet1 = workbook.Worksheet("sheet1");
    var worksheet2 = workbook.Worksheet("sheet2");
    
    var listSheet1 = new List<IXLRow>(); // list of Rows
    var listSheet2 = new List<IXLRow>();
    
    // puts all UsedRows (including "headers") from sheet1 into a list of rows
    using (var rows = worksheet1.RowsUsed())
    {
      foreach (var row in rows)
      {
        listSheet1.Add(row);
      }
    }
    
    using(var rows = worksheet2.RowsUsed())
    {
      foreach (var row in rows)
      {
        listSheet2.Add(row);
      }
    }
    
    IEqualityComparer comparer = new XLRowComparer(); // you have to implement your own comparer here. there's a lot of tutorials/samples out there
    
    var uniqueIdList = listSheet1.Intersect(listSheet2, comparer).ToList(); // in this case I'd use intersect instead of except which returns the IDs provided in sheet1 and sheet2
    
    // and now you just have to put the rows from uniqueIdList into a new worksheet and save it
    

    我希望这会有所帮助...

    【讨论】:

    • 谢谢斯蒂芬。我已经尝试获取 Comman 值列表。但是在列表中我只得到了列表第一列的值。我怎样才能得到所有 5 个 Coulmn 值codevar ummatches = list1.Select(f => f.Code).Except(list2.Select(b => b.代码));
    • 请给我一些解决方案..谢谢
    • 非常感谢斯蒂芬..你能给我一些例子或链接比较器。这对我很有帮助
    • 这可能对你有帮助:stackoverflow.com/questions/74032/…
    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多