Задать вопрос
@max_bu

Как обработать несколько файлов exel с помощью python?

Здравствуйте, подскажите пожалуйста, запутался:

Есть 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: если слово одно, он найдет, но если в столбце несколько слов он его пропускает.

Как решить эти задачи?
Заранее спасибо
  • Вопрос задан
  • 204 просмотра
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы