之后使用openpyxl将数据写入excel中的列

时间:2017-11-26 02:02:33

标签: python excel openpyxl

再回来...... 所以现在,我已经能够使用openpyxl将我的数据拉入python并完成计算,但现在我仍然坚持如何将其打印回另一张纸。 下面只显示引用单元格的最后一个总值,这显然不是我想要的结果。 我需要增加行和打印到excel文件的总值。 在B2,B3等...... 引用"粗略"回到我的词典中的个人姓名,并打印到第三张表格会更好,所以A1:Ax和总B1:Bx中的名字。 非常感谢帮助到达任何一个! 感谢

wb = openpyxl.load_workbook("Test_book.xlsx") 
sheet=wb.get_sheet_by_name('Hours')   
employee_names=[]
employee_hours=[]
for row in sheet['A']:
    employee_names.append(row.value)
for row in sheet['B']:
    employee_hours.append(row.value)
print(employee_names)
print(employee_hours)
my_dict=dict(zip(employee_names,employee_hours))
print(my_dict)

sheet2=wb.get_sheet_by_name('Rate')
employee_names2=[]
employee_Rate=[]

for row in sheet2['A']:
    employee_names2.append(row.value)
for row in sheet2['B']:
    employee_Rate.append(row.value)
print(employee_names2)
print(employee_Rate)

my_dict2=dict(zip(employee_names2,employee_Rate))
print(my_dict2)

sheet3=wb.get_sheet_by_name('payable')
#pulls key from dictionary, multiples it by other number
for row in sheet['A']:
    if row.value in my_dict:
        gross=(float(my_dict[row.value]*float(my_dict2[row.value])))       
        print(format(gross,'.2f'))
        sheet3.cell(row=2,column=2).value=gross

wb.save("Test_book.xlsx")

1 个答案:

答案 0 :(得分:0)

就我个人而言,我认为这应该在Excel本身完成,使用类似vlookup的功能。无论哪种方式,你真正需要做的就是跟踪你在哪一行

...
sheet3=wb.get_sheet_by_name('payable')
#pulls key from dictionary, multiples it by other number
rownum = 2
for row in sheet['A']:
    if row.value in my_dict:
        gross=(float(my_dict[row.value]*float(my_dict2[row.value])))       
        print(format(gross,'.2f'))
        #put name in A
        sheet3.cell(row=rownum,column=1).value=row.value
        #put gross pay in B
        sheet3.cell(row=rownum,column=2).value=gross
        rownum += 1

wb.save("Test_book.xlsx")

此外,openpyxl支持数组索引样式的单元格引用,可以使事情更容易读/写:

#these are equivalent
sheet.cell(row=1, column=1).value = value
sheet.['A1'] = value

您可能在某些时候发现openpyxl.utils.get_column_letter()函数很有用。