Требуются опытный специалист, который способен создать программу, которая позволит взять некоторый массив данных в одной Excel книги и перенести его в другую Excel книгу, причем не открывая Excel файлы, дабы не затрачивать время на операции по открытию/закрытию файлов. Требуется прямая передача данных в некотором количестве потоков (по количеству целевых книг).
На данный момент, все работает на базе макроса, который делает свою работу, однако проблема состоит в том, что скорость передачи данных не велика (около 50 строк в секунду), а задача распределять до миллиона строк на примерно 150-200 отдельных книг в течении считанных минут.
Сам макрос можно скачать по ссылке:
drive.google.com/open?id=... Что должна уметь программа:
знать где лежит исходная книга, из которой берутся данные;
знать имя листа, откуда берутся данные, хоть название листа и стандартное будет, но тем не менее этот параметр тоже выводим в настройки;
знать столбик, где указывается адрес книги в которую переносятся данные;
знать столбик, где указывается номер строки в которую переносятся данные;
знать диапазон столбцов из которых переносим данные в целевую книгу;
знать координаты мета с которого начинается выставка данных в целевую книгу, по умолчанию и по факту будет левый верхний угол, т.е. A1;
имеющиеся файлы *.xlsb, которые находятся в папке такой-то конвертировать в формат "Таблица XML 2003 (*.xml)", причем тут тоже имеется некоторая проблема, связанная с тем, что мы можем это сделать через "Сохранить как ", однако у нас может быть и другой путь, нужно будет обсудить оптимальный путь;
знать имя листа, который программа изымает из файла и сохраняет в *.xml формат;
знать перечень адресов файлов, которые требуется конвертировать в формат "Таблица XML 2003 (*.xml)";
при клике на кнопку "Раскидать данные базы по книгам" запускается указанный процесс;
при клике на кнопку "Преобразовать данные из *.xlsx в *.xml в папке" запускается указанный процесс;
при клике на кнопку "Обнуление книг" запускается процесс полной очистки книг по имеющемуся перечню, это делается с целью опустошить перечень книг, чтобы перезолить их данными, когда строки нужно куда-то сместить в другое место;
знать папку, в которую собираются файлы по перечню адресов файлов;
при клике на кнопку "Преобразовать данные из *.xlsx в *.xml по перечню" запускается указанный процесс;
упаковывать получаемые из папки/перечня файлы *.xml в rar/zip архив, каждый в отдельном архиве с названием файла, сжиматься файл должен максимально, после архивации файл *.xml удаляется;
при клике на кнопку "Запустить полный цикл импорта" запускается процесс "Раскидать данные базы по книгам", затем запускается процесс "Преобразовать данные из *.xlsx в *.xml по перечню", после чего данные попадают в нужную папку, где *.xml файлы пакуются в архив, а сами *.xml файлы удаляются;
выводить детальную статистику по текущим процессам, включая прогрессор (осудим в процессе разработки/доработки);
выводить подробную справку по завершению процесса (обсудим в процессе разработки/доработки);
после того, как из файла "1. ПЕРЕДАЧА.xlsb" процесс передачи завершен без ошибок и прочих вопросов, то необходимо автоматически удалить все содержимое ячеек "Области печати";
Для работы требуется:
провести испытания текущей модели (макроса), чтобы понять примерный порядок работы механизмов, возможно, что-то можно будет вынести полезное для понимания выше описанного ТЗ;
наметить пути более эффективной работы разрабатываемого механизма, у нас по сравнению с VBA имеется много поточность;
оценить возможную степень прироста производительности, она должна быть в десятки разы выше текущей реализации на VBA;
сделать модель из 100 файлов (ФАЙЛ_1, ФАЙЛ_2 и т.д.), куда будет перекидываться инфа из файла "1. ПЕРЕДАЧА.xlsb", в котором будет 100 000 строк с случайными данными;
Рекомендации:
скрипты делать отдельно друг от друга, а так же скрипт, который будет запускать тот или иной скрипт, который выполняет узкую задачу, дабы правки сценария были в одном скрипте, а сами механизмы, которые выполняют отдельные задачи каждый в отдельном скрипта. Это пригодится для дальнейшей разработки и развития создаваемого ПО;
код необходимо подробно комментировать на русском языке;
в процессе работы создавать файл с информацией о модулях и скриптах программы, которые следует достаточно подробно описать, дабы потомки или мы сами легко могли разобраться во всем и доработать ПО;
предпочтительно, чтобы программа была в виде 1 файла.
Процесс работы:
делается прога;
предоставляется ограниченная версия программы;
заказчик тестирует прогу;
производится оплата на кошелек Киви или ЯД;
вместе с неограниченной прогой предоставляется и исходник.
Для решения всех вопросов используется скайп, пишите мне сюда:
live:vadimmeleshko2017
Если скайпа нет, то организовать общение будет тяжело.