Здравствуйте, подскажите пожалуйста, запутался:
Есть 20 ексель файлов в каждом из них 50 000 строк и 10 столбцов.
1. Мне нужно из каждого файла вытянуть строки, которые содержат ключевые слова: lookFor1 и lookFor2 в столбце "F".
2. Все эти строки записать в единый файл
Нашел в гугл следующее решение + свои нагромождения:
from openpyxl import Workbook,load_workbook
import re
import os
for root, dirs, files in os.walk("."):
files = filter(lambda x: x.endswith('.xlsx'), files)
for filename in files:
wayBook = filename
wbSearch = Workbook()
wbSearch = load_workbook(wayBook)
wsSearch = wbSearch.active
wbResult = Workbook()
wsResult = wbResult.active
resultRow = 1
lookFor1 = 'Кино'
lookFor2 = 'Книга'
for i in range(1,50000):
value=str(wsSearch.cell(row=i, column=6).value)
mailvalue=wsSearch.cell(row=i, column=9).value
if value in lookFor1 :
wsResult.cell(row=resultRow, column=1).value=mailvalue
wsResult.cell(row=resultRow, column=2).value=value
resultRow += 1
elif value in lookFor2 :
wsResult.cell(row=resultRow, column=1).value=mailvalue
wsResult.cell(row=resultRow, column=2).value=value
resultRow += 1
wbResult.save("result_" + str(wayBook))
print('Все готово: ' + str(wayBook) + 'Удачи!')
Этот код создает пустые файлы.
from openpyxl import Workbook,load_workbook
import re
wayBook = "search.xlsx"
wbSearch = Workbook()
wbSearch = load_workbook(wayBook)
wsSearch = wbSearch.active
wbResult = Workbook()
wsResult = wbResult.active
resultRow = 1
lookFor1 = 'Кино'
lookFor2 = 'Книга'
for i in range(1,50000):
value=str(wsSearch.cell(row=i, column=6).value)
mailvalue=wsSearch.cell(row=i, column=9).value
if (' ' + value + ' ') in (' ' + lookFor1 + ' '):
wsResult.cell(row=resultRow, column=1).value=mailvalue
wsResult.cell(row=resultRow, column=2).value=value
resultRow += 1
elif (' ' + value + ' ') in (' ' + lookFor2 + ' '):
wsResult.cell(row=resultRow, column=1).value=mailvalue
wsResult.cell(row=resultRow, column=2).value=value
resultRow += 1
wbResult.save("result_" + str(resultRow) + ".xlsx")
print('Все готово! Удачи')
print (wbSearch)
Этот код работает, но есть две проблемы:
1: нет автоматизации, обрабатывает один файл.
2: если слово одно, он найдет, но если в столбце несколько слов он его пропускает.
Как решить эти задачи?
Заранее спасибо