Python / Pandas从excel表复制和粘贴

时间:2018-02-28 04:39:34

标签: python excel openpyxl

我发现这种语法可以从一个工作簿特定工作表复制并粘贴到另一个工作簿。但是,我需要帮助的是如何将复制的信息粘贴到第二个工作簿/表中的特定单元格。就像我需要将信息粘贴在单元格B3而不是A1中。 谢谢

import openpyxl as xl
path1 = "C:/Users/almur_000/Desktop/disandpopbyage.xlsx"
path2 = "C:/Users/almur_000/Desktop/disandpopbyage2.xlsx"
wb1 = xl.load_workbook(filename=path1)
ws1 = wb1.worksheets[0]
wb2 = xl.load_workbook(filename=path2)
ws2 = wb2.create_sheet(ws1.title)
for row in ws1:
    for cell in row:
        ws2[cell.coordinate].value = cell.value
wb2.save(path2)

wb2是path2“C:/Users/almur_000/Desktop/disandpopbyage2.xlsx”

2 个答案:

答案 0 :(得分:1)

谢谢那些帮助我的人。 我稍微修改了一下答案。我删除了最后一个def语句并保留了其他所有内容。它非常有效。复制并粘贴到我需要的地方,无需从模板中删除任何内容。

`#! Python 3

- 使用OpenPyXl库

复制和粘贴范围
import openpyxl

#Prepare the spreadsheets to copy from and paste too.

#File to be copied
wb = openpyxl.load_workbook("foo.xlsx") #Add file name
sheet = wb.get_sheet_by_name("foo") #Add Sheet name

#File to be pasted into
template = openpyxl.load_workbook("foo2.xlsx") #Add file name
temp_sheet = template.get_sheet_by_name("foo2") #Add Sheet name

#Copy range of cells as a nested list
#Takes: start cell, end cell, and sheet you want to copy from.
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
#Paste data from copyRange into template sheet
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
def createData():
    print("Processing...")
    selectedRange = copyRange(1,2,4,14,sheet) #Change the 4 number values
    pastingRange = pasteRange(1,3,4,15,temp_sheet,selectedRange) #Change the 4 number values
    #You can save the template as another file to create a new file here too.s
    template.save("foo.xlsx")
    print("Range copied and pasted!")`

答案 1 :(得分:0)

要复制,请将整个工作表中的工作表粘贴到另一个工作表中。

import pandas as pd

#change NameOfTheSheet with the sheet name that includes the data
data = pd.read_excel(path1, sheet_name="NameOfTheSheet")

#save it to the 'NewSheet' in destfile
data.to_excel(path2, sheet_name='NewSheet')