Программа для переноса данных между файлами

Алексей13 років у сервісі
Дані замовника будуть вам доступні після подання заявки
04.07.2014

Нужно написать десктопную программу ( с внятным интерфейсом для простого пользователя) для поиска одного товара (по артикулу или артикул + бренд) в исходном файле и перенос его цены (или другой информации из заданного столбца(цов) в соответствующий товар в другом файле в заданные столбцы.

Т.е. берем артикул, по нему находим этот же товар в другом файле и переносим с входного файла в выходной все указанные данные, цену и другую информацию с указанных столбцов в указанные столбцы

Идентификация товара происходит по артикулу или по артикулу + бренд.

Выбор варианта идентификации задается в программе, т.е. можно просто по артикулу, а можно по артикулу + бренд

Могут быть большие файлы по 100 000 и более строк, программа должна мочь такие размеры переваривать и ни виснуть и не вешать комп!

Иногда файлы могут быть в разной кодировке, хотелось бы чтобы не смотря на это, программа могла сделать поиск в них и найти что нужно и сделать перенос, если конечно такое в принципе возможно.

На входе ексель или CSV файл ( с входного файла берем данные) - пусть это будет файл - 1 Чаще файл 1 - это будет ексель файл но иногда и CSV

Т.е. программа должна спокойно работать как с ексель так и с CSV файлами.

Если на входе ексель файл, то там может быть много листов, нужно чтобы задавалось с какого листа берем информацию. Т.е. считываем листы с файла и выводим их имена и там уже выбирается лист для обработки.

Указываем в каком столбце артикул и бренд (если идентификация по артикул + бренд) и где к примеру цена (или другая нужная информация для переноса), т.е. указываем с каких столбцов будем переносить

информацию в другой файл. Переносится может сразу несколько ячеек.

В программе должно настраиваться (задаваться) в каких столбцах артикул а в каком цена (или другие данные для переноса).

На выходе ексель или CSV файл в котором мы ищем нужный артикул (или артикул + бренд) и в указанный столбец вписываем цену (иди другу заданную информацию), если переносим информацию с нескольких столбцов,

то в настройках указывается в какие столбцы делать перенос с иходного файла

Данные могут вписываться как в свободный столбец так и в столбец с данными с перезаписью того что там есть. Куда вписывать цену (или другие данные) - задается в программе.

Поиск артикула в файле поиска (это файл -2) происходит или до конца файла, или до 1-го найденого и тогда дальше не идем.

Режим поиска (до конца файла, даже если нужный артикул уже найден, так как могут быть повторы, поэтому делаем поиск до конца файла. или до 1-го найденого) - задается в программе

Ниже описанное действие включается по требованию. Поставили галочку - делаем проверку на повторы, не поставили галочку - ищем подряд без данной проверки.

Каждый артикул, по которому мы уже сделали поиск, мы записываем отдельно или в файл текстовый или в базу данных (лучше в базу данных, скорость в разы выше), и каждый артикул перед началом поиска проверяем, не делали ли мы по нему уже поиск,

так как во входном файле, так же есть повторы артикулов, поэтому чтобы не гонять писк по тому что было, делается эта проверка.

Размер входящего файла (файл -1) намного меньше чем выходящего (файл -2, где мы делаем поичк), поэтому лучше перепроверять на повторы в начале, чем лишний раз пробегать 80-100 000 строк в файле поиска.

Т.е. алгоритм примерно такой (при включенной галочек "Делать проверку на повторы в входном файле"):

берем в исходном файле артикул товара, обращаемся к базе данных для проверки нет ли там уже этого артикула - так как это первый артикул, естественно там ничего нет, значит идем и

ищем в файле поиска данный артикул (ищем или по артикулу или по артикул +бренд), нашли, перенесли с 1-го файла в этот цену (или другие данные) в заданный столбец(ы) и побежали дальше до конца файла (если вариант проверки файла до конца), если опять встретили данный артикул - то опять вписали цену (или другие данные) и так до конца, если был выбран режим остановки после 1-го найденого, то останаливаемся при нахождении 1 артикула.

Дошли до конца файла поиска - записали данный артикул в базу данных и возвращемся к исходнму файлу и берем следующий артикул - проверяем - есть ли он в базе данных - предположим что он там уже есть,

значит проверка по этому артикулу уже производилась и цена и другие данные перенесены, значит пропускаем его и берем следующий артикул с входящего файла. Проверяем есть ли он в базе данных - его нет, значит побежали по файлу поиска

искать этот артикул (или артикул +бренд), нашли, перенесли цену (и другие данные если задан перенос нескольких столбцов) в указанный столбец(ы) и побежали до конца файла, дошли до конца, записали этот артикул в базу и пошли в исходный файл за следующим артикулом...

и так пока не будут проверены все артикулы с входящего файла.

Артикулы которые не были найдены в файле поиска записываем отдельно в текстовик.

Во время работы должна быть какая-то индикация, на какой стадии что происходящее, чтобы можно было ориентироваться о времени работы и завершении обработки файла.

Образцы файлов прикреплены ниже, каждый из приведенных файлов может быть как входящем, т.е. откуда берем информацию, так и выходящим, т.е. где ищем нужный артикул и переносим заданные данные.

Бюджет до 600 рублей.