Доброго времени суток.
Пишу в отчаянии.
Уже несколько суток пытаюсь освоить хоть что-нибудь (openpyxl, xlsxwriter, xlrd-xlwt...) что поможет мне выполнить следующий, казалось бы простой алгоритм:
- Открыть Excel файл.
- Найти в определенном столбце ячейку совпадающую с заранее заданным словом (на русском языке).
- Скопировать всю строку вместе с этой ячейкой и всеми данными в этой строке (ряду).
- Создать новый файл Excel и записать туда все это (все ряды, в которых нашлось то заранее заданное слово).
Попробовал ровно каждый из модулей. В одних жуткие траблы с получением данных из строки, другие не воспринимают русский язык в ячейках, третьи вообще отказываются работать...
Вот допустим последний неудавшийся пример с использованием win32com:
import win32com.client
Excel = win32com.client.Dispatch("Excel.Application")
text = 'Блендер'
counter = 2
def write(val, pos):
wb = Excel.Workbooks.Add()
ws = wb.ActiveSheet
i = 1
for rec in val:
ws.Cells(pos,i).value = rec
i = i + 1
wb.SaveAs('test.xlsx')
wb.Close()
Excel.Quit()
def search():
wb = Excel.Workbooks.Open(u'C:/Users/User/Desktop/excel.xlsx')
sheet = wb.ActiveSheet
srch = [r[0].value for r in sheet.Range("B2:B13")]
for items in srch:
if text in items:
global counter
print ('Found')
found = sheet.Range("A%s:D%s" % (counter,counter)).Value
print (found)
write(found,counter)
counter += 1
search()
Наверняка этот код настолько неидеален, насколько это вообще возможно.
Но пусть там будет хоть овер999 костылей, лишь бы работало, а он не работает даже с этим - при виде русскоязычного текста впадает истерику и кричит 'OLE error NONE NONE'. А даже без русских символов один фиг записывает только первую ячейку.
Буду бесконечно рад любой помощи.