我想使用python将我在'Sheet1'中的数据传输到同一工作簿中的工作表'Sheet2'中。我编写了下面的脚本,但面对'IndexError:列表索引超出范围' 即可。我知道这不是最好的方法。如果有人能以更有效的方式指导我,我将不胜感激。我在下面分享了excel文件的快照
我可以直接输入'Sheet1'单元格值---> 'Sheet2'单元格值而不是'Sheet1'单元格值--->列表---->'Sheet2'单元格值?
import openpyxl
wb = openpyxl.load_workbook('C:\Users\laban\Desktop\Par-emails1.xlsx')
type(wb)
wb.get_sheet_names()
sheet = wb.get_sheet_by_name('Sheet1')
type(sheet)
anotherSheet = wb.active
sheet1 = wb.get_sheet_by_name('Sheet2')
type(sheet1)
par=[sheet.cell(row= col, column=1).value for col in range(1, 2450)]
email_no=[sheet.cell(row= col, column=2).value for col in range(1, 2450)]
Domain=[sheet.cell(row= col, column=3).value for col in range(1, 2450)]
email=[sheet.cell(row= col, column=4).value for col in range(1, 2450)]
for x in range(0,2450):
if email_no[x]<9:
sheet1.cell(row= x+1, column=1).value=par[x]
sheet1.cell(row= x+1, column=2).value=email_no[x]
sheet1.cell(row= x+1, column=3).value=Domain[x]
sheet1.cell(row= x+1, column=4).value=email[x]
wb.save('C:\Users\laban\Desktop\Par-emails1.xlsx')
答案 0 :(得分:1)
您可以使用:
wb = openpyxl.load_workbook('C:/Users/laban/Desktop/Par-emails1.xlsx')
sheet1 = wb.get_sheet_by_name('Sheet1')
sheet2 = wb.get_sheet_by_name('Sheet2')
for i,row in enumerate(sheet1.iter_rows()):
for j,col in enumerate(row):
sheet2.cell(row=i+1,column=j+1).value = col.value
显然在2.4中,您可以使用一个命令执行此操作:Copy whole worksheet with openpyxl
答案 1 :(得分:1)
显然,这是我目前正在使用的非常简化的版本。
这是一个代码片段,用于将数据从sheet1复制到sheet2而不进行任何格式化。
你不需要指定最大行,最大列,因为你可以使用它
sheet.max_row
和sheet.max_columns
方法。
from openpyxl.cell import Cell
max_row = sheet1.max_row #Get max row of first sheet
max_col = sheet1.max_column #Get max column of first sheet
for row_num in range(1,max_row + 1): #Iterate through rows
for col_num in range(1, max_col + 1): #Iterate through columns
_cell1 = sheet1.cell(row=row_num, column=col_num)
_cell2 = sheet2.cell(row=row_num, column=col_num)
_cell2.value = _cell1.value
添加了额外的变量以便理解。你可以在最后压缩。
答案 2 :(得分:0)
par=[sheet.cell(row= col, column=1).value for col in range(1, 2450)]
短于1个单元格:
for x in range(0,2450):
答案 3 :(得分:0)
def excel_op():
filename='D://Python//excelread.xlsx'
sheet_name='Sheet1'
book = xlrd.open_workbook(str(filename))
sheet = book.sheet_by_name(sheet_name)
workbook = xlsxwriter.Workbook('excelwrite.xlsx')
worksheet = workbook.add_worksheet()
row_count = int(sheet.nrows)
col_count = int(sheet.ncols)
for row in range(0, int(row_count)):
for col in range(0, int(col_count)):
worksheet.write(row,col,str(sheet.cell(row, col).value))
workbook.close()
del book
答案 4 :(得分:0)
shutil.copy("Source.xlsx", "target.xlsx")