Обучение Урок 2 из 12

Таблица Excel

Цель
Процесс читает clients.xlsx, проверяет телефоны клиентов, пишет статус в каждую строку и сводку по городам на отдельный лист
Время
20 минут

Файлы примеров

Что понадобится #

  • Студия Tulpar (урок Первый процесс пройден).
  • Файлы примеров: excel_check.flow.json и clients.xlsx. Excel на компьютере не нужен — студия и робот читают и пишут файлы .xlsx сами.

Создайте папку, например C:\Уроки\Excel, и положите в неё оба файла. Путь к файлу без диска считается от папки, где сохранён процесс, поэтому таблица должна лежать рядом с .flow.json.

В clients.xlsx пять клиентов: колонки „ФИО“, „Телефон“, „Город“ и пустая пока „Статус“.

Шаг 1. Откройте процесс #

В студии нажмите «Открыть» и выберите excel_check.flow.json. Процесс состоит из шагов:

  1. file.copy — делает копию clients_result.xlsx, чтобы исходная таблица не менялась;
  2. excel.readRange — читает все строки листа в переменную clients;
  3. control.forEach — для каждого клиента проверяет телефон и пишет статус в колонку D;
  4. excel.writeRange — записывает сводку по городам на лист „Города“.
Шаг чтения таблицы: путь к файлу, лист, диапазон и переменная для строк
Шаг чтения таблицы: путь к файлу, лист, диапазон и переменная для строк

Шаг 2. Чтение таблицы #

Выберите шаг „Прочитать клиентов“. В «Свойства»:

  • путь к файлу — clients_result.xlsx;
  • лист и диапазон пустые — читается первый лист целиком;
  • флажок первой строки-заголовка включён: каждая строка становится объектом с ключами из заголовков, например client['ФИО'];
  • в «Выходы» строки сохраняются в переменную clients.

Шаг 3. Проверка строк и запись статуса #

Внутри цикла „Для каждого клиента“ (переменная элемента client, индекса — i):

  1. control.assign „Проверить телефон“ записывает в status значение выражения /^\+996 \d{3} \d{3} \d{3}$/.test(client['Телефон']) ? 'Проверен' : 'Ошибка в телефоне'.
  2. excel.writeCell „Статус в колонку D“ пишет {{ status }} в ячейку D{{ i + 2 }}: индекс i начинается с 0, а первая строка листа — заголовки, поэтому строка клиента — i + 2.
Запись статуса: ячейка в колонке D и значение из переменной
Запись статуса: ячейка в колонке D и значение из переменной

Шаг 4. Сводка на отдельный лист #

Шаг „Сводка по городам“ собирает массив объектов { 'Город': …, 'Клиентов': … }, а excel.writeRange записывает его на лист Города с ячейки A1. Ключи объектов становятся заголовками колонок; листа нет — он создаётся.

Запись сводки: лист „Города“, начальная ячейка и данные
Запись сводки: лист „Города“, начальная ячейка и данные

Шаг 5. Запуск #

Нажмите «Запуск» (F5). Робот выполняет шаги по порядку, в «Лог» — строка на каждого клиента.

Что должно получиться #

  • В «Лог»: Клиентов в таблице: 5, пять строк вида 1. Асанов Нурлан Бакытович (Бишкек) — Проверен и Готово: проверено 5 из 5, результат — clients_result.xlsx.
  • Рядом с процессом появился clients_result.xlsx: в колонке „Статус“ у всех — Проверен, на листе „Города“ — пять городов по одному клиенту.
  • Исходный clients.xlsx не изменился.

Испортите телефон в clients.xlsx (например, уберите пробел) и запустите снова: у этого клиента в статусе будет Ошибка в телефоне, а в итоге — проверено 4 из 5.

Если не получилось #

Что видно Что сделать
„файл не найден“ на первом шаге clients.xlsx должен лежать в папке процесса. Сохраните процесс в ту же папку (Ctrl+S) и запустите снова.
„файл занят“ Закройте clients_result.xlsx в Excel: открытый файл нельзя перезаписать.
В логе пустые ФИО Имена колонок в выражениях должны совпадать с заголовками таблицы буква в букву: client['ФИО'].
Статусы записаны не в те строки Проверьте ячейку: D{{ i + 2 }} — при таблице с заголовками в первой строке.

Дальше — урок Веб-форма в браузере: те же клиенты подаются заявками на веб-странице.