gpt4 book ai didi

python - 如何通过 python 将列名放在现有的 excel 电子表格上?

转载 作者:行者123 更新时间:2023-12-04 20:56:06 26 4
gpt4 key购买 nike

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)

正如您通过此附加图像看到的那样,那里没有列:
enter image description here

最佳答案

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

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

  • 无论如何:如果你真的想对应付表这样做,你可以!
    您已经在 my_dict3 字典中获得了所有相关信息。
  • 因此,您可以从应付表中删除所有内容。
  • 之后,您可以简单地编写列标题:
    sheet3.cell(row=1, column=1).value = 'Employee Name'
    sheet3.cell(row=1, column=2).value = 'Total Payment'
  • 之后,您可以填写其他行:
    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
  • 请确保工作表的其余行中没有旧数据...

  • 据我了解,应付表是您的输出表(您的程序不会向其他两张表写入任何内容)。

    不过,只有当您确实确定可以丢弃该表上的现有信息时,您才应该这样做。

    (将标题行写入前两张纸可能不是一个好主意,因为您仅将它们用作输入。)

    关于python - 如何通过 python 将列名放在现有的 excel 电子表格上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47582036/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com