23
Сен
2016

Как выполнить поиск и копирование данных в Excel?

Пытаюсь освоить хоть что-нибудь (openpyxl, xlsxwriter, xlrd-xlwt...) что поможет мне выполнить следующий, казалось бы простой алгоритм:

  1. Открыть Excel файл.
  2. Найти в определенном столбце ячейку совпадающую с заранее заданным словом (на русском языке).
  3. Скопировать всю строку вместе с этой ячейкой и всеми данными в этой строке (ряду).
  4. Создать новый файл 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'. А даже без русских символов один фиг записывает только первую ячейку.

Буду бесконечно рад любой помощи.

Источник: https://ru.stackoverflow.com/questions/569340/%D0%9A%D0%B0%D0%BA-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D1%8C-%D0%BF%D0%BE%D0%B8%D1%81%D0%BA-%D0%B8-%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B2-excel

Тебе может это понравится...

Добавить комментарий