скопируйте и вставьте из первой строки в последнюю непустую строку с помощью openpyxl - PullRequest
0 голосов
/ 20 апреля 2020

Я хочу скопировать диапазон и вставить его в другой файл Excel.

Я нашел этот; https://yagisanatode.com/2017/11/18/copy-and-paste-ranges-in-excel-with-openpyxl-and-python-3/

Но здесь вам нужно указать конкретный c номер строки и столбца для "pasteRange". Но в "pasteRange" я хочу завершить строку "последней непустой строкой".

Вот что я попробовал ниже с указанными c строкой, номерами столбцов;

import openpyxl

# Copied data
wb = openpyxl.load_workbook("D:\Documents\Desktop\deneme/2020_03_Kalip_Kontrol_Raporu2.xlsx")  # Add file name
sheet = wb["Sheet1"]  # Add Sheet name

# Paste Data
template = openpyxl.load_workbook("D:\Documents\Desktop\deneme/2020 Data_çalışma2.xlsx")  # Add file name
temp_sheet = template["Sheet1"]  # Add Sheet name


# Copy range def
def copyRange(startCol, startRow, endCol, endRow, sheet):
    rangeSelected = []
    # Loops through selected Rows
    for i in range(startRow, endRow + 1, 1):
        # Appends the row to a RowSelected list
        rowSelected = []
        for j in range(startCol, endCol + 1, 1):
            rowSelected.append(sheet.cell(row=i, column=j).value)
        # Adds the RowSelected List and nests inside the rangeSelected
        rangeSelected.append(rowSelected)

    return rangeSelected


# Paste range def
def pasteRange(startCol, startRow, endCol, endRow, sheetReceiving, copiedData):
    countRow = 0
    for i in range(startRow, endRow + 1, 1):
        countCol = 0
        for j in range(startCol, endCol + 1, 1):
            sheetReceiving.cell(row=i, column=j).value = copiedData[countRow][countCol]
            countCol += 1
        countRow += 1

#Copy-Paste Operation
def createData():
    selectedRange = copyRange(2, 8, 183, 4500, sheet)  # Change the 4 number values (startCol, startRow, endCol, endRow, sheet)
    pastingRange = pasteRange(2, 3286, 183, 7000, temp_sheet, selectedRange)  # Change the 4 number values (startCol, startRow, endCol, endRow, sheet)


    template.save("D:\Documents\Desktop\deneme/2020 Data_çalışma2.xlsx")

go= createData()
...