Сравнение двух Excel-таблиц с помощью бота🤖
MarkЧтобы работать над этим примером, Вам нужно установить UiPath.Excel.Activities в меню Activities > Manage Packages (Ctrl+P)
Кейс
Есть две таблицы со столбцом «Имя». Оба файла содержат имена «Иван» и «Сергей». В первой таблице есть уникальные имена: «Антон», «Алексей» и «Дмитрий». Вторая таблица содержит уникальное имя «Фёдор». Нам нужно:
- сравнить эти две таблицы;
- определить повторяющиеся имена и записать их отдельный файл;
- определить уникальные имена и записать их в отдельный файл.
Итак, поехали:
- Создайте последовательность действий;
- Добавьте оператора «Excel Application Scope»;
- В окне «Properties» в поле «WorkbookPath» выберите первую таблицу;
- Добавьте оператора «Read Range» в «Excel Application Scope»;
- В окне «Properties» в поле «Range» прописываем «””», в поле «SheetName» прописываем имя листа «Sheet1», в поле «DataTable» прописываем «
dtFirst
», нажимаем правой кнопкой мыши и выбираем «Creat Variable». Выбираем тип переменной «DataTable»; - Добавьте ниже ещё одного оператора «Excel Application Scope»;
- В окне «Properties» в поле «WorkbookPath» выберите вторую таблицу;
- Добавьте оператора «Read Range» в «Excel Application Scope»;
- В окне «Properties» в поле «Range» прописываем «””», в поле «SheetName» прописываем имя листа «Sheet1», в поле «DataTable» прописываем «
dtSecond
», нажимаем правой кнопкой мыши и выбираем «Creat Variable». Выбираем тип переменной «DataTable».
Когда у нас «прочитаны» две таблицы, сделаем следующее:
- Добавьте оператора «Build Data Table»;
- Нажмите на кнопку «DataTable», создайте таблицу с заголовком «Имя» с типом «String» и нажмите «OK»;
- В окне «Properties» в поле «DataTable» прописываем «
dtMain_dif
», нажимаем правой кнопкой мыши и выбираем «Creat Variable». Выбираем тип переменной «DataTable». Тем самым, мы создали таблицу-донора, которая будет собирать уникальные имена; - Добавьте ещё одного оператора «Build Data Table»;
- Нажмите на кнопку «DataTable», создайте таблицу с заголовком «Имя» с типом «String» и нажмите «OK»;
- В окне «Properties» в поле «DataTable» прописываем «
dtMain_pivot
», нажимаем правой кнопкой мыши и выбираем «Creat Variable». Выбираем тип переменной «DataTable». Тем самым, мы создали таблицу-донора, которая будет собирать одинаковые имена;
Теперь начнём соотносить строчки в этих таблицах:
- Добавьте оператора «For Each Row» и пропишите следующие переменные в поля: Foreach
row
indtFirst
; - Добавьте оператора «Add data row» в «For Each Row»;
- В окне «Properties», в поле «ArrayRow» пропишите:
{row.Item(0).toString}
; в поле «DataTable» пропишите:dtMain_dif
. Тем самым мы переносим информацию из Excel-таблицы в таблицу-донор; - Добавьте ещё одного оператора «For Each Row» и пропишите следующие переменные в поля: Foreach
row1
indtSecond
; - Добавьте оператора «Assign» и пропишите в него новую переменную типа «Boolean»
blI
и прировняйте ее к «False»; - Добавьте ещё одного оператора «For Each Row», поместите его в тело предыдущего «For Each Row», прямо под «Assign», и пропишите следующие переменные поля: Foreach
row2
indtMain_dif
; - Добавьте оператора «If» и в поле «Condition» пропилите условие:
row1.Item(0).toString=row2.Item(0).toString
. Тем самым, мы прописываем условие, если ячейка из Excel-таблицы равна ячейке таблицы-донора, то...; - Добавьте в «Then» последнего «For Each Row» оператора «Assign» и приравняйте его к «True»;
- Добавьте в «Then» оператора «Add Data Row»;
- В окне «Properties», в поле «ArrayRow» пропишите:
{row1.Item(o).toString}
; в поле «DataTable» пропишите:dtMain_pivot
. Тем самым мы переносим информацию об уникальных именах из Excel-таблицы во вторую таблицу-донор; - Добавьте в «Then» оператора «Remove Data Row»;
- В окне «Properties», в поле «DataTable» пропишите
dtMain_dif
, а в поле «Row» пропишитеrow2
. Тем самым, мы удаляем одинаковые номера из таблицы-донора.
Теперь вернёмся во второй «For Each Row»:
- Добавьте оператора «If» и в поле «Condition» пропилите условие:
blI=false;
- Добавьте в «Then» оператора «Add Data Row»;
- В окне «Properties», в поле «ArrayRow» пропишите:
{row1.Item(o).toString}
; в поле «DataTable» пропишите:dtMain_dif
; - Вернувшись в главную последовательность действий, добавьте оператора «Excel Application Scope»;
- В окне «Properties» в поле «WorkbookPath» выберите таблицу, содержащую разные имена;
- Добавьте оператора «Write Range» в «Excel Application Scope»;
- В окне «Properties» в поле «DataTable» пропишите
dtMain_dif
; - Ниже добавьте ещё одного оператора «Excel Application Scope»;
- В окне «Properties» в поле «WorkbookPath» выберите таблицу, содержащую одинаковые имена;
- Добавьте оператора «Write Range» в «Excel Application Scope»;
- В окне «Properties» в поле «DataTable» пропишите
dtMain_pivot
; - Нажмите F7, бот🤖 начал свою работу.
Источник: