添加行/列时维护公式

时间:2018-09-24 03:47:22

标签: python excel openpyxl

我正在使用openpyxl进行一些Excel表格Python自动化,当我尝试在表格中插入列或行时遇到了问题。

我正在修改其中具有基本公式(即=F2-G2)的现有excel工作表,但是当我在这些单元格之前插入行或列时,该公式不会像您执行操作时那样进行相应的调整在excel中执行该操作。

例如,在列F之前插入一列应将公式更改为=G2-H2,但公式将停留在=F2-G2 ...

有什么办法可以解决此问题?我无法真正遍历所有单元格并修复公式,因为该文件包含许多包含公式的列。

2 个答案:

答案 0 :(得分:0)

openpyxl是文件格式库,而不是Excel之类的应用程序,并且不会尝试提供相同的功能。库的标记程序应该可以在移动的单元格中转换公式,但这会忽略任何引用在同一工作表或同一工作簿中移动的单元格的公式。

答案 1 :(得分:0)

简单,只需从插入的行向下迭代到最大行,并相应地更改公式的行号,下面的代码仅是示例:

#insert a new row after identified row   
ws.insert_rows(InsertedRowNo) 
#every time you insert a new row, you need to adjust all formulas row numbers after the new row.
for i in range (InsertedRowNo,ws.max_row):
    ws.cell(row=i,column=20).value='=HYPERLINK(VLOOKUP(TRIM(A{0}),dict!$A$2:$B$1001,2,0),A{0})'.format(i)