Цитата: AndreyZh ➤ Вчера "глубоко" вникал в новую "индивидуальную" программисткую задачку: суть элементарная - от покупателя приходят заявки в виде электронных таблиц xls (пока формата 97-2007) упакованных архиватором 7z. Таблицы для разных областей и форматов магазинов покупателей приходят разными письмами. В каждой таблице сводная заявка на несколько (от 1 до 180) магазинов - формат вроде бы единный. Затем диспетчера "разбивают" заявки по маршрутам доставок, а операторы вводят их в предварительные заказы, формируя план производства (для этого этапа уже были улучшения "УС Лэнд", поднявшие производительность операторов в несколько раз)... но сейчас число заказов магазинов выросло до 400 в день и просто банально некуда сажать новых (если принимать) диспетчеров и операторов, т.е. мне нужно придумать нечто, которое ещё в несколько раз ускорит их работу... в самом деле давно придумал - осталось только сделать.
Подготовительные (возможные) задачи:
1. Считать приложенный файл *.7z из письма - уже умею (делал) в рамках инструмента разработки... но как-то "нерегламентировано" посылаются подтверждения, т.ч. может быть сами будут сохранять в нужный мне каталог.
2. Разархивировать посылку. Это просто: есть "командный" вариант freeware архиватора 7z.exe (приложен), который могу вызывать из батника или программы.
3. Далее нужно "разобрать" *.xls - тут "засада": инструмент разработки может вызывать ole объекты, но на ПК должны быть установлены "офисы" - они есть и все разные... кроме того "опыт" общения показал "тормознутость" данных технологий.
Начал искать - нашел прекрасную, постоянно развивающуюся freeware программу
xls2csv (приложена), которая в интерфейсном или командном режиме (данный вариант приложен) переводит xls(x) в csv файлы требуемой кодировке... ну а *.csv можно считать любым приложением или обработать, т.к. это обычный текстовый файл, где поля (колонки) отделены разделителем.
Цитата: konst ➤ Чего нет?
1. скачиваем и устанавливаем плагин attachmentextractor
2. инструменты - фильтры сообщений - создаем правила - можно несколько - при выполнении условий "присвоить сообщению метку" - "AE AutoExtract"
3. в настройках attachmentextractor - указываем каталог куда сохранять и что сохранять - письма отмеченные меткой которую присвоили в п.2
Очередная "схожая" задача и очередные попытки изобретения лисапеда, а так же очередные засады... Впрочем задача решена!
На этот раз заказы от покупателей приходят в отдельных письмах по одному заказу (XLS таблица) на один магазин.
Попытки осилить самостоятельное чтение писем из программы привели лишь к лучшему пониманию фарси и испанского технического языка и пониманию новых техник шифрования почтовиков... Многочисленные изучения модификаций исходного кода системы разработки и её пересборки привели к весьма "ограниченным" успехам, но задачу нужно было сдавать в срок, а посему забросил эту борьбу с "ветрянными мельницами".
Воспользовался советом Константина - установил плагин attachmentextractor для Mozilla. Конечно и здесь не "всё просто" - плагин тупо сваливает все вложения из не удаленных писем по маске в каталог, а в этой куче "дерьма" нужно выискивать необходимые таблицы... причем нет возможности выявления их по маске. От двух сетей - это просто цифровые имена файлов.
Далее, опять "зуд творчества" - попытки открывать и читать средствами MS Excel или Open Office из программы...
Опять "мимо" - выявилось две техники:
1. Открываю офис, читаю информацию, закрываю офис. Обработка одной таблицы примерно 40 секунд, а их в смену от 200 до 350 штук... с дикими обновлениями экранов - не реально;
2. Открываю офис, читаю информацию таблицу, открываю следующую - читаю и т.д., затем закрываю всё. Примерно на сотой таблице комп отваливается по переполнению 3 Gb памяти...
Ну не получилось... ну и ладно - вспомнил о внешней программе из первой цитаты.
Не тут то было! - Она хорошо читает простые таблицы, которые были в прежней задаче, но чудотворцы заказчики "сейчас" начали "изголятся": автофильтры в таблицах, расчетные нужные мне значения, декоративные форматы числовых полей, объединение полей из которых так же нужно брать инфу...
xls2csv с этим не смогла работать...
Ищем дальше! Те же авторы выпустили абсолютно новый продукт, на момент поиска beta версия Xls-Converter: работающий от Windows 7 (на Win 10 глючит), а командный режим вообще не работал... Хотя этот продукт нормально понимал эти чудные таблицы - думаю когда-то доделают до нормального состояния.
Ищем дальше! Единственное бесплатное, что нашел (судя по оформлению всего) "студенческая" поделка Российского программиста - одиночки Антона Орлова (XLS-CSV Converter) ...
и чудо: она правильно понимала все виды таблиц, в том числе форматы *.XLSX. Без косяков и в ней не обошлось - расширения файлов должны быть в нижнем регистре, но всё же она оказалась
более гибкой и функциональной, чем используемый раннее вариант - дистрибутив в приложении. Там так же ссылки и описания.
В остальном технология моей программуськи:
1. Из мусорки сваленной attachmentextractor удаляю откровенно ненужные файлы;
2. Оставшиеся файлы конвертирую в CSV и по "быстрому" критерию отбраковываю не нужные... 1/2 имена "плохих" файлов сохраняю в таблице, дабы не тратить на них время в следующих сеансах.
3. Далее цикл по шаблонам заказов, чтение из таблиц удовлетворяющих шаблонам и создание заказов (отгрузочных накладных) - рутина...