使用 Python 将公式写入 Excel
Write formula to Excel with Python
我正在集思广益如何最好地解决以下问题。非常感谢任何意见。
示例 Excel sheet 列:
Column A | Column B | Column C
Apple | Apple |
Orange | Orange |
Pear | Banana |
我希望 Excel 告诉我 A 列和 B 列中的项目是匹配还是不匹配,并在 C 列中显示结果。我在 C 列中输入的公式是 =IF(A1=B1, "Match", "Mismatch")
在 excel 上,我只需将公式拖到 C 列中的其余单元格以将公式应用于它们,结果将是:
Column A | Column B | Column C
Apple | Apple | Match
Orange | Orange | Match
Pear | Banana | Mismatch
为了使用 python 脚本自动执行此操作,我尝试了:
import openpyxl
wb = openpyxl.load_workbook('test.xlsx')
Sheet = wb.get_sheet_by_name('Sheet1')
for cellObj in Sheet.columns[2]:
cellObj.value = '=IF($A=$B, "Match", "Mismatch")
wb.save('test.xlsx')
这将公式写入 C 列中的所有单元格,但公式仅引用单元格 A1 和 B1,因此导致 C 列中的所有单元格 = 匹配。
Column A | Column B | Column C
Apple | Apple | Match
Orange | Orange | Match
Pear | Banana | Match
你会如何处理?
您可能希望动态创建公式,因此 C
的每一行都取自 A
和 B
的相应行:
for i, cellObj in enumerate(Sheet.columns[2], 1):
cellObj.value = '=IF($A[=10=]=$B[=10=], "Match", "Mismatch")'.format(i)
幸运的是,现在您可以轻松地在某些记录中做公式。还有更简单的函数可以使用,比如:
wb.sheetnames
而不是 wb.read_sheet_names()
sheet = wb['SHEET_NAME']
而不是 sheet = wb.get_sheet_by_name('SHEET_NAME')
公式可以很容易地插入:
sheet['A1'] = '=SUM(1+1)'
我正在集思广益如何最好地解决以下问题。非常感谢任何意见。
示例 Excel sheet 列:
Column A | Column B | Column C
Apple | Apple |
Orange | Orange |
Pear | Banana |
我希望 Excel 告诉我 A 列和 B 列中的项目是匹配还是不匹配,并在 C 列中显示结果。我在 C 列中输入的公式是 =IF(A1=B1, "Match", "Mismatch")
在 excel 上,我只需将公式拖到 C 列中的其余单元格以将公式应用于它们,结果将是:
Column A | Column B | Column C
Apple | Apple | Match
Orange | Orange | Match
Pear | Banana | Mismatch
为了使用 python 脚本自动执行此操作,我尝试了:
import openpyxl
wb = openpyxl.load_workbook('test.xlsx')
Sheet = wb.get_sheet_by_name('Sheet1')
for cellObj in Sheet.columns[2]:
cellObj.value = '=IF($A=$B, "Match", "Mismatch")
wb.save('test.xlsx')
这将公式写入 C 列中的所有单元格,但公式仅引用单元格 A1 和 B1,因此导致 C 列中的所有单元格 = 匹配。
Column A | Column B | Column C
Apple | Apple | Match
Orange | Orange | Match
Pear | Banana | Match
你会如何处理?
您可能希望动态创建公式,因此 C
的每一行都取自 A
和 B
的相应行:
for i, cellObj in enumerate(Sheet.columns[2], 1):
cellObj.value = '=IF($A[=10=]=$B[=10=], "Match", "Mismatch")'.format(i)
幸运的是,现在您可以轻松地在某些记录中做公式。还有更简单的函数可以使用,比如:
wb.sheetnames
而不是wb.read_sheet_names()
sheet = wb['SHEET_NAME']
而不是sheet = wb.get_sheet_by_name('SHEET_NAME')
公式可以很容易地插入:
sheet['A1'] = '=SUM(1+1)'