У меня есть два листа Excel в одном файле, каждый из которых содержит 5 столбцов. Данные в моем первом листе Excel уникальны. При этом второй лист может содержать дубликаты. Я фильтрую и сравниваю каждую запись на первом листе со всеми записями на втором листе. Данные на первом листе занимают несколько сотен записей, но данные на втором листе довольно велики, скажем, 200-300 тыс. Ручное сравнение путем фильтрации данных отнимает много времени.
Проблема: я пытаюсь автоматизировать эти multiple column filter
критерии Excel в c# WinForms
.
Что я пробовал: я думал, что Jagged Arrays справится с задачей, поэтому создал два файла Jagged Arrays
. Каждый зубчатый массив заполняется динамически данными 1 листа. Таким образом, JaggedAry1
будет содержать данные из Sheet1
и JaggedAry2
из Sheet2
. Если я не ошибаюсь, вероятно, зубчатые массивы будут выглядеть примерно так:
ДжаггедАри1:
Row 1 Name Jim Bob Joe
Row 2 Age 25 30 35
Row 3 ID 1AB 2C 2BE
Row 4 Addr Ad1 Ad2 Ad3
Row 5 DOB D1 D2 D3
ДжаггедАри2:
Row 1 Name Jim Bob Joe Jim Bob Jim Joe Bob Sam
Row 2 Age 25 30 35 25 32 35 25 30 35
Row 3 ID 1AB 2C 2BE 1AB 2C 2D AB 2W 2E
Row 4 Addr Ad1 Ad2 Ad3 Ad1 Ad2 Ad4 Ad5 Ad6 Ad7
Row 5 DOB D1 D2 D3 D1 D2 D3 D3 D4 D5
Пример результата: если у меня есть данные двух организаций, Джим может быть именем нескольких человек и может иметь одинаковые идентификаторы. Если в sheet1
у меня есть имя сотрудника Джим, чей DOB датируется 25 января 1988 г. и с идентификатором = 2, то в sheet2
я хочу перечислить всех Джимов, чей DOB будет 25 января 1988 г. или позже, с одинаковыми идентификаторами, т.е. ID=2. Адрес может быть одинаковым или другим.
Я знаю, что могу сделать это с помощью foreach
циклов, но я думаю, что для множественных сравнений потребуется много временных переменных. Вот я и подумал, может есть более простой способ?
Примечание. Я также попытался напрямую применить фильтр ко второму листу, используя Range Filter
InteropExcel. Но это работает быстро только для небольших объемов данных. Файлы Excel с большими объемами данных отнимают много времени.
Было бы очень здорово, если бы кто-то мог указать мне в правильном направлении. Заранее спасибо.