Python/Openpyxl - 比较 Excel 中的单元格与差异格式(文本与数字)

Python/Openpyxl - comparing cells in Excel with diff format (text vs number)

提问人:Frane 提问时间:9/18/2022 最后编辑:Peter MortensenFrane 更新时间:11/10/2022 访问量:140

问:

我想使用 Python/openpyxl 比较 Excel 中的两个单元格。我使用下面的简单公式。

x=1
print(ws.max_column,ws.max_row)
for i in range(1,ws.max_column):
    for j in range(3,ws.max_row+1):
        y=x+1
        if ws.cell(j,x).value != ws.cell(j,y).value:
            print("Errors found: ")
            print(ws.cell(j,x), ws.cell(j,x).value, ws.cell(j,y).value)
            print(ws.cell(j,x).style)
            print(ws.cell(j,y).style)
    x+=2

问题是我得到的打印结果:

Errors found:
<Cell 'Sheet1'.S228>  None

Normal

Normal

我找不到当Excel中的两个单元格都为空时报告差异的原因。

Python Excel 比较 OpenPyXL

评论

0赞 moken 9/18/2022
我可以通过简单地在单元格中输入一个引号来复制您看到的内容。单元格值开头的单引号表示内容为文本,Excel 不显示。因此,在单元格中只输入一个引号意味着它看起来是空的,并且单元格值没有长度,但值是 '' 而不是 None。不是说这是你正在经历的,但它肯定会发生。
0赞 Frane 9/18/2022
我现在检查了正在比较的单元格 S228 和 T228,当我查看 Excel 顶部的 FX 字段时,它们似乎都是空白的。但是我也使用条件格式来查看它们是否重复,excel 也说它们不是。这很奇怪,我的意思是,如果我要手动将每个单元格设置为空白,那么这根本没有意义。你还有什么其他想法@moken吗?
0赞 Frane 9/19/2022
更新:我刚刚用公式 = ISBLANK() 检查了这些单元格。一个单元格返回值 true,另一个返回 false 它们看起来都一样,但我无法用 python 区分它们。有没有人知道如何处理它?

答:

0赞 Frane 9/19/2022 #1

三心二意的解决方案 - 友情链接

我使用了kutools并使用了“到实际”功能,该功能使所有空白但不是空白单元格都变成了空白单元格

一个完整的答案是找到一种方法来对 openpyxl 做同样的事情。

评论

0赞 moken 9/19/2022
在不确定受影响的空白单元格的状态是什么的情况下,检测单元格的建议只是一个猜测,但是我希望至少在所有情况下,值 len(cell.value) 的长度为零。因此,如果单元格满足该条件,则可以将其设置为 None,cell.value = None
0赞 Frane 9/20/2022
@moken是的,你是对的。所有这些的 LEN 值均为 0。将尝试使用该选项。谢谢