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