如何通过python在现有的Excel电子表格中添加列名?

Test_book.xlsx是一个现有的Excel文件,应该显示员工姓名,小时,费率和总付款。 我在第二张纸上显示了员工姓名和工作时间,员工姓名和付款率,最后在最后一张纸上显示了员工姓名和付款总额。 然而,我似乎无法弄清楚如何在每张表上添加列名(员工姓名,时间,小时费率,总支付)。 这里是我一直在努力的代码:

import openpyxl from itertools import chain from collections import defaultdict 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') sheet3rows=[] #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]))) #creates list sheet3rows.append(gross) print(format(gross,'.2f')) print(sheet3rows) my_dict3=dict(zip(employee_names2,sheet3rows)) print(my_dict3) #Print gross to payable sheet r=1 for x in sheet3rows: sheet3.cell(row=r,column=2).value=x r+=1 #wb.save("Test_book.xlsx") my_dict4 = defaultdict(list) for k, v in chain(my_dict.items(), my_dict2.items(), my_dict3.items()): my_dict4[k].append(v) for k, v in my_dict4.items(): print(k, v) 

正如你可以看到这个附加的图像,那里没有列: 在这里输入图像说明

要将列名添加到Excel文档中的现有工作表,您必须在工作表顶部插入一行。 有两个大问题:

  • 插入一行并不困难,但显然它还没有(或尚未)在openpyxl中实现。
  • 插入一行将改变工作表的内容。 某些程序可能依赖于应付账单单元格A1中第一个员工的姓名。

无论如何:如果你真的想要这样做的应付表,你可以! 你已经获得了my_dict3字典中的所有相关信息。

  1. 因此,您可以从应付表中删除所有内容。

  2. 之后,您可以简单地编写列标题:

     sheet3.cell(row=1, column=1).value = 'Employee Name' sheet3.cell(row=1, column=2).value = 'Total Payment' 
  3. 之后,您可以填写其他行:

     rownum = 2 for (k,v) in my_dict3.iteritems: sheet3.cell(row=rownum, column=1).value = k sheet3.cell(row=rownum, column=2).value = v rownum = rownum + 1 
  4. 请确保在表格的其余行中没有旧数据…

据我了解,应付表是您的输出表(您的程序不会写任何其他2张)。

但是,如果您确实可以放弃该工作表上的现有信息,则只能这样做。

(将头部行写入前两张可能不是一个好主意,因为您只是将它们用作input。)