为了账号安全,请及时绑定邮箱和手机立即绑定

写入下一个空列

写入下一个空列

慕森卡 2023-10-18 21:05:09
我正在使用 openpyxl 将 sql 查询结果写入 Excel 文件。如果我将其写入 B 列。如何确保下次运行此脚本时它开始写入 B 列?我尝试在sheet.cell表达式中使用.max_column,但它的作用是写入类似“E”列       A       B      C      D       E1    Chris2    5'113    215lbs4    26Yrs56脚本:def writeToExcel(1_payments_l,2_payments_l,5_payments_l):    r_1 = 20    c_1 = 12    r_2 = 37    c_2 = 12    r_5 = 47    c_5 = 12    xfile = openpyxl.load_workbook(fn)    now = datetime.now()    last_month = now.month - 1 if now.month > 1 else 12    last_month = "January February March April May June July August September October November " \                 "December".split()[last_month - 1]    sheet = xfile['PPC Cost Per Tran.']    # sheet['L19'].cell = last_month    sheet.cell(row=19, column=sheet.max_column).value = last_month    for 1pymt in 1_payments_l:        sheet.cell(row=r_1, column=sheet.max_column).value = f'{1pymt:,}'        r_1 += 1    for 2pymt in 2_payments_l:        sheet.cell(row=r_2, column=sheet.max_column).value = f'{2pymt:,}'        r_2 += 1    for 5pymt in 5_payments_l:        sheet.cell(row=r_5, column=sheet.max_column).value = f'{5pymt:,}'        r_5 += 1    xfile.save(r'C:\Users\12345\Monthly Indicators Dashboard.xlsx')    return sheet
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

这max_column是根据最后一个活动单元决定的。这有时会产生“错误”结果,因为即使单元格为空,如果它具有某种格式,它也会显示为活动状态并影响max_column.


例如,您可能有一些带有特定字体颜色的单元格。然后,也许这些单元格中的数据已被删除,但即使您看不到它,该单元格仍然配置了字体颜色,因此该单元格存在于工作簿内部并且可能会更改值max_column。


为了避免这种情况,您可能需要手动查找第一个“无数据”单元格。就像是:


from openpyxl import load_workbook


wb = load_workbook("book.xlsx")

ws = wb.active

for cell in ws[1]:

    if cell.value is None:

        print(cell.col_idx)

        break


查看完整回答
反对 回复 2023-10-18
  • 1 回答
  • 0 关注
  • 57 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信