【问题标题】:Python and Excel FormulaPython 和 Excel 公式
【发布时间】:2021-10-04 15:41:30
【问题描述】:

这里是初学者,但特别需要尝试通过自动化 Excel 让我的生活更轻松。 我有一份每周报告,其中包含许多无用的列,使用 Python 我可以删除这些列并重命名它们,代码如下。

from openpyxl import Workbook, load_workbook

wb = load_workbook('TestExcel.xlsx')
ws = wb.active

ws.delete_cols(1,3)
ws.delete_cols(3,8)
ws.delete_cols(4,3)

ws.insert_cols(3,1)

ws['A1'].value = "Full Name"
ws['C1'].value = "Email Address"

ws['C2'].value = '=B2&"@testdomain.com"'

wb.save('TestExcelUpdated.xlsx')

这可以完成工作,但我希望公式从 B2 向下继续(因为顶行是标题)。

ws['C2'].value = '=B2&"@testdomain.com"'

显然,在 Excel 中,这只是将公式拖到列末尾的情况,但我无法在 Python 中使用它。我见过有人问过类似的问题,但答案在我头上。 真的很感谢一个傻瓜指南。 Example of Excel report after Python code

【问题讨论】:

    标签: python excel excel-formula formula


    【解决方案1】:

    一种方法是遍历工作表中的行。

    for row in ws.iter_rows(min_row=2): #min_row ensures you skip your header row
        row[2].value  = '=B' + str(row[0].row) + '&"@testdomain.com"' 
    

    row[2].value 由于基于零的索引而选择第三列。 row[0].row获取当前行对应的编号

    【讨论】:

    • Brillant,感谢您的回复和详细的回答。真的有助于学习。我试过你的代码,虽然它看起来应该可以工作,但 Excel 似乎不喜欢它。以 Excel 结尾的公式是 =B2&@testdomain.com。我什至尝试过row[2].value = '=B' + str(row[0].row) + "&" + "@testdomain.com",但结果相同。
    • 解决了这个问题。缺少一两个引号。 row[2].value = '=B' + str(row[0].row) + '&"@jtltraining.ac.uk"'
    • 抱歉,错过了您的原始回复。我已经更新了我的答案以包括您的修改。如果这解决了您的问题,请标记为已接受:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 2017-08-29
    相关资源
    最近更新 更多