Простое десктоп-приложение на Python (tkinter) для сравнения двух Excel-файлов со списками транспортных средств по гос. номерам или VIN.
- Выбор старого и нового Excel-файла (
.xlsx,.xls) - Автоматический поиск колонки с идентификатором ТС (гос. номер / VIN)
- Нормализация значений (удаление пробелов, дефисов, точек, слешей, верхний регистр)
- Определение:
- какие ТС добавились
- какие ТС выбыли
- какие остались без изменений
- Вывод отчёта в приложении и сохранение в
.txt
excel_compare_tool/
├── main.py
├── comparator.py
├── utils.py
├── requirements.txt
├── README.md
└── test_data/
├── old_vehicles.xlsx
└── new_vehicles.xlsx
Скачайте и установите Python 3.9+ с официального сайта: python.org
- Перейдите в папку проекта:
cd excel_compare_tool- Создайте виртуальное окружение:
python -m venv venv- Активируйте окружение (Windows):
venv\Scripts\activate- Установите зависимости:
pip install -r requirements.txt- Запустите приложение:
python main.pyУстановите PyInstaller:
pip install pyinstallerСоберите приложение:
pyinstaller --onefile --windowed --name "ExcelCompare" main.pyПо вашему запросу также подходит команда:
pyinstaller --onefile --windowed main.pyМожно запустить готовый скрипт:
build_exe.batПосле успешной сборки получите файл:
dist\ExcelCompare.exe
Если нужен установщик с мастером установки (а не только portable .exe), используйте Inno Setup:
- Установите Inno Setup: jrsoftware.org/isinfo.php
- Убедитесь, что уже собран
dist\ExcelCompare.exe - Откройте файл
installer.issв Inno Setup - Нажмите Compile
Результат:
dist\ExcelCompareInstaller.exe
Для portable-варианта (запуск сразу с флешки/папки) используйте:
build_portable.batСкрипт создаёт:
dist\ExcelComparePortable.exe
dist\ExcelComparePortable.zip
portable\
Как использовать:
- Передайте пользователю
ExcelComparePortable.zipилиExcelComparePortable.exe - На целевом ПК Python устанавливать не нужно
- Для запуска достаточно открыть
ExcelComparePortable.exe
Если на рабочем ПК запрещено устанавливать Python, используйте облачную сборку:
- Загрузите проект в GitHub-репозиторий
- Откройте вкладку Actions
- Выберите workflow Build Portable EXE
- Нажмите Run workflow
- После завершения откройте run и скачайте артефакты:
ExcelComparePortable-exeExcelComparePortable-zip
Workflow уже добавлен в проект:
.github/workflows/build-portable.yml
В папке test_data находятся примерные файлы:
old_vehicles.xlsx— старый списокnew_vehicles.xlsx— новый списокgenerate_test_data.py— генератор тестовых файлов
Сценарий включает:
- 10 одинаковых идентификаторов
- 3 новых (поступили)
- 2 удалённых (выбыли)
- разные форматы записи (пробелы, дефисы, разный регистр)
- присутствует VIN
Если файлов old_vehicles.xlsx и new_vehicles.xlsx ещё нет, создайте их командой:
python test_data/generate_test_data.pyТесты написаны на стандартном unittest (без дополнительных зависимостей).
Запуск всех тестов:
python -m unittest discover -s tests -p "test_*.py"