Openpyxl:我们发现一些内容有问题

2024-09-24 08:25:25 发布

您现在位置:Python中文网/ 问答频道 /正文

打开用openpyxl生成的文件时,我收到错误消息“我们发现某些内容有问题”。该文件是通过连接不同的xlsx文件并在其他单元格中添加其他公式生成的

该问题是由于我正在将带有if条件的公式写入单元格(第二个for循环导致excel错误消息)引起的

这就是代码:

import openpyxl as op
import glob

# Search for all xlsx files in directory and assign them to variable allfiles
allfiles = glob.glob('*.xlsx')
print('Following files are going to be included into the inventory: ' + str(allfiles))

# Create a workbook with a sheet called 'Input'
risk_inventory = op.load_workbook('./Report/Risikoinventar.xlsx', data_only = False)
input_sheet = risk_inventory['Input']
risk_inventory.remove(input_sheet)
input_sheet = risk_inventory.create_sheet()
input_sheet.title = 'Input'
r_maxrow = input_sheet.max_row + 1

# There is more code here which is not related to the problem

for i in range (2,r_maxrow):
    if input_sheet.cell(row = i, column = 2).value == 'Top-Down':
        input_sheet.cell(row = i, column = 20).value = '=IF(ISTEXT(H{}),0,IF(H{}<=1000000,1,IF(H{}<=2000000,2,IF(H{}<=4000000,3,IF(H{}<=8000000,4,IF(H{}>8000000,5,0))))))'.format(i,i,i,i,i,i)
    elif input_sheet.cell(row = i, column = 2).value == 'Bottom-Up':
        input_sheet.cell(row = i, column = 20).value = '=IF(ISTEXT(H{}),0,IF(H{}<=1000000,1,IF(H{}<=2000000,2,IF(H{}<=4000000,3,IF(H{}<=8000000,4,IF(H{}>8000000,5,0))))))'.format(i,i,i,i,i,i)

for i in range (2,r_maxrow):
    if input_sheet.cell(row = i, column = 2).value == 'Top-Down':
        input_sheet.cell(row = i, column = 21).value = '=IF(K{}="Sehr gering",1,IF(K{}="Gering",2,IF(K{}="Mittel",3,IF(K{}="Hoc",3,IF(K{}="Sehr hoch",3,0))))))'.format(i,i,i,i,i,i)
    elif input_sheet.cell(row = i, column = 2).value == 'Bottom-Up':
        input_sheet.cell(row = i, column = 21).value = '=IF(K{}="Sehr gering",1,IF(K{}="Gering",2,IF(K{}="Mittel",3,IF(K{}="Hoc",3,IF(K{}="Sehr hoch",3,0))))))'.format(i,i,i,i,i,i)

所以,根据单元格(行=i,列=2)中的信息,我希望单元格(行=i,列=21)中有一个特定的公式。第一个for循环工作正常,第二个for循环导致excel中出现错误消息,并且公式未粘贴)

正如您可能已经看到的,我尝试用Python编写代码已经有一周了,我以前从未尝试过编写代码

非常感谢


Tags: 文件formatforinputifvaluecellcolumn