gpt4 book ai didi

python - openpyxl max_row 和 max_column 错误地报告了一个更大的数字

转载 作者:行者123 更新时间:2023-11-28 22:24:09 36 4
gpt4 key购买 nike

我的查询是关于一个函数,该函数是我正在开发的解析脚本的一部分。我正在尝试编写一个 python 函数来查找与 excel 中的匹配值对应的列号。 excel 是使用 openpyxl 即时创建的,它具有第一行(从第 3 列开始)标题,每行跨越 4 列合并为一个。在我的后续函数中,我正在解析一些要添加到与匹配标题对应的列的内容。 (附加信息:我正在解析的内容是 blast+ 输出。我正在尝试创建一个摘要电子表格,其中每列中都有命中名称,其中包含命中、间隙、跨度和身份的子列。前两列是查询重叠群及其长度。)

我最初为 xlrd 编写了一个类似的函数并且它起作用了。但是当我尝试为 openpyxl 重写它时,我发现 max_row 和 max_col 函数错误地返回了比实际存在的更多的行和列。例如,对于这个试验输入,我有 20 行,但它报告为 82。请注意,我手动选择了空行和列,然后右键单击并删除了它们,正如本论坛其他地方所建议的那样。这并没有改变错误。

def find_column_number(x):
col = 0
print "maxrow = ", hrsh.max_row
print "maxcol = ", hrsh.max_column
for rowz in range(hrsh.max_row):
print "now the row is ", rowz
if(rowz > 0):
pass
for colz in range(hrsh.max_column):
print "now the column is ", colz
name = (hrsh.cell(row=rowz,column=colz).value)
if(name == x):
col = colz
return col

max_row 和 max_col 的问题已在此处讨论 https://bitbucket.org/openpyxl/openpyxl/issues/514/cell-max_row-reports-higher-than-actual我在这里应用了这个建议。但是 max_row 仍然是错误的。

for row in reversed(hrsh.rows):
values = [cell.value for cell in row]
if any(values):
print("last row with data is {0}".format(row[0].row))
maxrow = row[0].row

然后我在 https://www.reddit.com/r/learnpython/comments/3prmun/openpyxl_loop_through_and_find_value_of_the/ 尝试了这个建议,并尝试获取列值。再次,脚本会考虑空列并报告比实际存在的列数更多的列数。

for currentRow in hrsh.rows:
for currentCell in currentRow:
print(currentCell.value)

你能帮我解决这个错误,或者建议另一种方法来实现我的目标吗?

最佳答案

如您链接到的错误报告中所述,工作表报告的尺寸与这些尺寸是否包含空行或空列之间存在差异。如果 max_rowmax_column 没有报告您想要看到的内容,那么您将需要编写自己的代码来找到第一个完全空的。当然,最有效的方法是从 max_row 开始并向后计算,但以下可能就足够了:

for max_row, row in enumerate(ws, 1):
if all(c.value is None for c in row):
break

关于python - openpyxl max_row 和 max_column 错误地报告了一个更大的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46569496/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com