Сложность копирования и вставки с одного листа на другой лист в Excel с использованием Python + Openpyxl - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь написать код, который может просматривать ячейки в одной электронной таблице Excel (first_sheet), чтобы найти слова, совпадающие со словами в словаре (second_sheet). Если есть совпадение, я хочу скопировать и вставить эту ячейку в третью электронную таблицу (вывод). У меня проблемы с копированием и вставкой части моего кода. Кто-нибудь может взглянуть + предоставить отзыв?

Я написал код, который может распознавать слова в словаре, но код, который я написал для копирования + вставки в выходную электронную таблицу, кажется, не работает. Я не получаю сообщения об ошибках. Выходная таблица просто пуста. Я провел три дня, просматривая свой код, чтобы увидеть, что пошло не так, но я все еще не могу решить проблему. Любой берущий?

# create dictionary of words to search for
Dict = {}
    for row in range(1, dictionary.max_row+1):
    for col in range(1, 2):
    cell_value = dictionary.cell(row=row, column=col).value
    Dict[cell_value] = dictionary.cell(row=row, column=1).value
    print (dictionary.cell(row=row, column=col).value)

global newRow
newRow = 1

# Search through worksheet with items from dictionary. If dictionary item is found, copy and paste row to separate sheet.
for row in range(1, data.max_row + 1):
    for col in range(1, 2):
        cell_value = data.cell(row=row, column=col).value
        if cell_value in Dict:
            print (data.cell(row=row, column=col).value)
        # Copy range of cells as a  list
        # Takes: start cell, end cell, and sheet you want to copy from.
            def copyRange(selectRow, selectColumn, data):
                rangeSelected = []
                rangeSelected.append(cell_value)
                print("copy works")
                return rangeSelected

        # Paste range
        # Paste data from copyRange into template sheet
            def pasteRange(pasteRow, pasteColumn, output, copiedData):
                global newRow
                countRow = 0
                countColumn = 0
                output.cell(row= newRow, column=1).value = copiedData[countRow][countColumn]
                newRow += 1
                print("paste works")

            def createData():
                global newRow
                print("Processing...")
                selectedRange = copyRange(row, 1, data) #Change the 4 number values
                print("range")
                pasteRange(newRow, 1, output, selectedRange)
            #Change the 4 number values
            #You can save the template as another file to create a new file here too
                print ("Copy and pasted.")

            createData()

wb.save('campaigns_practicefile.xlsx')
print ("save works")
...