Как изменить или переписать и обновить ячейки в существующих.xlsm файл с макросами из более чем одного исходного файла, например csv ..... и т. д. без потери данных? - PullRequest
0 голосов
/ 11 мая 2019

Прежде всего, я буду обсуждать мой случай ..... У меня есть основной файл 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 может помочь мне в этом

Извините за длительный набор текста, я надеюсь, что это будет понятно

...