Прежде всего, я буду обсуждать мой случай .....
У меня есть основной файл xlsm, содержащий некоторые макросы, так как эти макросы делят этот файл xlsm на два файла xlsx, так как ежедневный отчет должен отправлять клиенту электронное письмо о перспективах, чтобы .....
файл xlsm содержит много листов, и каждый лист содержит данные, такие как диаграммы, таблицы, и есть основной лист, который я каждый день обновляю вручную, следуя некоторым письмам в электронном письме Outlook, содержащем данные в теле и некоторые вложения .... ..так далее
после обновления основного листа, содержащего много столбцов с множеством строк, я запускаю этот макрос, так как этот макрос делит файл xlsm на файл xlsx, чтобы я мог отправить этот файл xlsx в виде почты .......
Итак, наконец, у меня появилась идея, как автоматизировать этот отчет xlsm. Я экспортирую любые данные из любого источника для примера. Я экспортирую входящие письма в файл csv, поэтому в этом файле csv есть несколько столбцов, основные столбцы которых я хочу использовать, это тема , Тело, от (имя), до (имя)
Итак, из этого файла электронной почты csv я могу анализировать строки и столбцы, используя скрипт с условием
Таким образом, моя проблема заключалась в том, что мне нужен хороший способ автоматизировать этот отчет и обновить xlsm с помощью языка программирования, создав простой графический интерфейс для импорта двух файлов, один из которых - файл xlsm, который я обновлял ежедневно, а другой - экспортированный csv. outlook в почтовых ящиках и кнопка, называемая somthing update, затем обновляет этот процесс и запускает макрос, затем отправляет электронное письмо
Итак, мы получили, что мой процесс доступа во всем происходит в среде Microsoft, такой как внешний вид и превосходство
Я искал язык и библиотеки, которые могли бы помочь мне в этом случае, и обнаружил, что Python - лучший язык для этого, используя некоторые библиотеки, такие как pandas и xlrd. Поэтому у меня появился код, но я застрял, и это не поможет. мне так давайте рассмотрим, что я сделал именно с питоном
Я пытаюсь обновить фрейм данных xlsm из фрейма данных csv, отфильтровывая значения по объекту. Я создал объект, это просто условие, которое печатает фрейм данных с использованием метода str.contains
#Condition 1 any mail from mowafy to te
frm_mwfy_to_te = data2.loc[data2['From:(Name)'].str.contains("mowafy",
na=False)
& data2['To:(Name)'].str.contains("te",
na=False)].drop_duplicates(keep=False)
frm_mwfy_to_te.Subject
#Condition 2 any mail from te to mowafy
frm_te_to_mwfy = data2.loc[data2['From:(Name)'].str.contains("te", na=False)
& data2['To:(Name)'].str.contains("mowafy",
na=False)].drop_duplicates(keep=False)
#Condition 3 any mail from pp to mowafy
frm_pp_to_mwfy = data2.loc[data2['From:(Name)'].str.contains("Someone1",
na=False)
| data2.loc[data2['From:(Name)'].str.contains("Someone2", na=False)
| data2.loc[data2['From:(Name)'].str.contains("Someone3", na=False)
| data2.loc[data2['From:(Name)'].str.contains("Someone4", na=False)
& data2['To:(Name)'].str.contains("mowafy",
na=False)].drop_duplicates(keep=False)
этот объект получает данные определенных строк, которые мне нужно отфильтровать в другом файле xlsm. Поэтому я попытался отфильтровать значения в столбце «Subject» в файле csv или в фрейме данных 1, чтобы отфильтровать в фрейме данных 2 xlsm файл by cloumn называется SiteCode, и этот код отфильтрован в файле xlsm
filtered_data =
data.loc[data.SiteCode.str.contains('|'.join(frm_mwfy_to_te.Subject))]
поэтому после того, как я отфильтровал строки, мне нужно обновить значения в определенных столбцах строк, содержащих отфильтрованные данные
for row in data.filtered_data
1) Я хочу проверить столбец с именем «Поставщик 1-й даты отправки», если результат строк был нулевым, затем заполнить его текущей датой, если заполнено, затем перейти к следующему столбцу
2) затем я хочу обновить результат строки в столбце с именем «Ожидание» значением «TE»
3) затем я хочу обновить строки, чтобы получить столбец с именем «Статус ожидания», но перед обновлением я хочу проверить 2 столбца, у меня 3 условия
Теперь у меня есть столбцы с именами «Дата принятия (Оптимизация)» и «Дата принятия (Планирование)», затем я хочу проверить значения в обоих столбцах
условие 1: если 2 столбца не заполнены, обновите столбец «Статус ожидания» на «Ожидание получения ТЕ»
условие 2: если заполнен столбец «Дата принятия (оптимизация)» и «Дата принятия (планирование)» пуста, то обновите столбец «Состояние ожидания» значением «Ожидание получения планирования TE»
условие 3: если столбец «Дата принятия (Оптимизация)» пустой и заполнен «Дата принятия (Планирование)», то обновите столбец «Состояние ожидания» значением «Ожидание получения ТЕ оптимизации»
это мое мнение
Важные замечания: Теперь этот случай, как мои файлы Excel, в качестве базы данных.Поэтому я хочу, чтобы кто-нибудь рассказал мне свою теорию о том, как найти лучший способ для автоматизации этого случая. Так что если есть какое-либо предложение, что если бы я мог использовать базу данных SQL и проанализировать все данные Excel в SQL, чтобы было проще использовать или хранитьфайлы Excel являются моей базой данных и работают как есть, любые предложения о том, какую среду или язык программирования я буду использовать, мне просто нужны некоторые идеи или предложения и какие шаги или даже дать мне некоторые материалы, чтобы помочь ......
Последнее примечание: я обнаружил, что Java POI может помочь мне в этом
Извините за длительный набор текста, я надеюсь, что это будет понятно