【问题标题】:Python for loop using openpyxlPython for 循环使用 openpyxl
【发布时间】:2015-09-04 04:13:36
【问题描述】:

我正在使用 openpyxl 包来制作一个简单的工具,该工具将用于获取大型电子表格的 excel 输入并制作更小更可用的电子表格。我已经尝试为这个逻辑使用许多不同类型的循环,但我仍然无法让它工作。目标是找到任何值为 1 的单元格,并将其旁边的单元格直接复制到新工作簿中。这是我的代码:

# for loop data logic
data = default['Default']
n = 1
for i in range(0,1000):
    for j in range(0,0):
        ds = data.cell(row = i, column = j)               
        if  ds == 1:
            n = n + 1
            ds.cell(row = i, column = 0).value = separated.cell(row = n, column = 0).value

注意:我输入的数据有许多单元格,第一列的数值为 1。这是该循环正在测试的一列。我一直在用一个简单的打印命令测试代码:

print(separated['A2'].value)

通过打印“无”来打印单元格中没有现值。同样,我为这个逻辑尝试了两个或三个不同的 for 循环,虽然它们都运行没有错误,但似乎没有一个改变“分离”工作表中的任何值。任何和所有的帮助表示赞赏。

【问题讨论】:

  • 你打印了 ds.查看价值

标签: python excel for-loop openpyxl


【解决方案1】:

代码中有几个错误。内部循环永远不会运行,因为range(0, 0) 是空的。此外,openpyxl 使用 1-indexing:A1 == cell(row=1, column=1) 所以ws.cell(row=0, column=0) 在执行时会引发异常。

但是,您可能应该只使用ws.get_squared_range(min_col, min_row, max_col, max_row) 来获取您想要查看的单元格的生成器。

【讨论】:

  • 我进行了您命名的更改,确实有帮助。我在另一个网站上发现有人对 A1 使用 (0,0) 表示法,这就是问题的根源。有点坐立不安,我让它开始工作。谢谢回复,非常感谢。
  • (0, 0) 当然是 Python 中的标准索引,但我们发现 A1 的 (1, 1) 导致的问题较少。
  • 准确地说,openpyxl 切换到 1-indexing(我认为是 2.0 版)。
【解决方案2】:

我认为您可以像这样扫描,扫描价值或文本。 示例:

for col in sheet['A1:B100']:

        for cell in col:

            if cell.value == '1':

                print("Lo halle")   

然后您继续复制新工作簿中的信息。

祝你好运

【讨论】:

    猜你喜欢
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多