如何在 openpyxl 中使写作动态化

问题描述 投票:0回答:2

我有一个脚本,它循环遍历 A 列的第 2 行到第 25 行,现在我想写一些与每个用户相关的东西(A 列信息)并将其显示在 B 列上。这一切都通过 openpyxl

import openpyxl

wb_obj = openpyxl.load_workbook(path)
sheet_obj = wb_obj.active
for col in sheet_obj.iter_cols(min_row=2, max_col=1, max_row=25):
  for cell in col:
    print(cell.value)
    for test in sheet_obj.iter_cols(min_row=2, max_col=2, max_row=25):
          for cel in col:
                sheet_obj[cel] = int(input())     


起初我尝试使用这个 for 循环两次来跟踪但是这不起作用。它询问第一个输入但是它无法在 sheet_obj[cel] 语句中工作

有人知道如何让它工作吗?

python loops openpyxl
2个回答
0
投票

不确定我是否理解问题,但这里有一些提示:

如果您不需要以任何方式设置数据样式,我建议您使用 pandas。像下面的例子 -

import pandas as pd


df = pd.read_excel(...)

# Create your column 'B' here...

df.to_excel(...)

如果您真的需要坚持使用 openpyxl,我会尝试以另一种方式遍历您的工作表。类似于下面的示例 -

    for row in range(2, 25):
        for col in range(2, 25):
            cell = sheet_obj.cell(
                row=row, column=col
            )
            cell.value = int(input())

这就是我在基于 openpyxl 的lib 上所做的。

抱歉没有完全回答。我试图只添加评论,但我没有足够的声誉。


0
投票

我在这里解决了我的问题是我使用的代码 第一个问题是它需要一个字符串,所以我使用了 str 命令 然后我的问题是单元格提供信息的方式,所以我尝试使用坐标子命令获取正确的信息,这样我就会收到“B4”而不是单元格工作表 B4

代码:

 for row in range (2,25):
  for col in range(2,3):
    cell = sheet_obj.cell(
      row=row, column=col
      )
    name = sheet_obj.cell(row = row, column =1)
    sheet_obj[str(cell.coordinate)] = int(input())

我希望这对可能遇到同样问题的人有所帮助。特别感谢 Eric Mendes 帮助我走上正轨

© www.soinside.com 2019 - 2024. All rights reserved.