1

私は2つのexcelファイルを持っています。
sheet1値を持つ 5 つの列があります。
sheet2には 1 つの列しかありません。
sheet1 とシートの最初の列にはいくつかの一意の値があります。excelsheet新しい列には5つの列があります(シート1とシート2の両方で一意の値が一致しています)別のが必要C#です
どんな助けでも大歓迎です。

4

1 に答える 1

1

これは、Interop.Excel ( Interop C# チュートリアル) または Interop の代替 (fe ClosedXML )を使用して行うことができます。ファイルを読み取り、LINQ を使用して必要なデータを取得します。IEnumerable.Except を使用すると、sheet2 にない sheet1 の要素を取得して新しいシートに配置し、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

これがお役に立てば幸いです...

于 2013-05-11T07:59:36.457 に答える