如何测试 Python 中的单元格坐标以更改数据?

How to test cell coordinates in Python to change data?

我正在尝试使用 python 迁移一些数据。我需要测试看看我是否有特定的列,然后如果单元格值是一个值,则更改为特定的其他值。所以我的问题是,如何进行坐标测试。

我正在使用 python 和 excel。我需要读入 excel 文件,然后更改数据,并输出新的、更改后的 excel 文件。 我正在使用 Python 和 PyCharm,现在尝试使用 openpyxl。我尝试了 xlrd/xlwt,并尝试使用 csv。从 sql 获取数据到 excel 文件,然后进行更改 - 这似乎是最简单的方法。

因此,例如,在特定情况下,我在第 4 列中有性别字段。所以我试着只指定第 4 列。旧数据的值为 "Male" 或 "Female" 新数据需要为数字代码,1 代表男性,2 代表女性。

    for cellObj in row:
     if cellObj.coordinate == [4:row]:
        if cellObj.value == 'Male':
            cellObj.value = 1
        elif cellObj.value == 'Female':
            cellObj.value = 2

(对不起,我试着把问题的格式弄对了,但是代码显示的不一样。)

此代码不正确。我不明白该怎么做。我有 Al Sweigart 的《用 Python 自动化无聊的东西》一书。我一直在寻找论坛和博客,但您总是必须知道确切的坐标。这就是为什么我尝试使用特定的第 4 列而不是在代码中进行测试以查看我需要哪一列。

编辑:

我无法添加到命令。这是所有代码。现在只得到 1 行。

wb = openpyxl.load_workbook(file_location)
sheet = wb.worksheets[0]
for cellObj in sheet.rows[0]:
  print(cellObj.value),
  print(' | '),
for row in sheet.iter_rows():
  for row_count, cellObj in enumerate(row):
      if cellObj.coordinate == 'E{}'.format(row_count):
          print row_count
          print(cellObj.value),
          if cellObj.value == 'Male':
             cellObj.value = 1
             print(cellObj.value)
          elif cellObj.value == 'Female':
             cellObj.value = 2
             print(cellObj.value)

我添加并更改了 sheet.iter_rows..这里是:OpenPyXL + How can I search for content in a cell in Excel, and if the content matches the search criteria update the content? 但这也不起作用。在 for 循环中,我做不到:

for i in sheet:
   do this for each row "i"

这个格式不行?

此外,这里:OpenPyXL + How can I search for content in a cell in Excel, and if the content matches the search criteria update the content? 有人说可以做 sheet.rows() 来遍历每一行,但这又给出了元组错误。 类型错误:'tuple' 对象不可调用

编辑

更新后,这似乎是更好的解决方案:

for row in sheet.iter_rows():
    for cellObj in row:
        if cellObj.column == 'E':
             # do something

旧答案

坐标的格式是A1。您需要针对以下内容进行测试:

for row_count, cellObj in enumerate(row, 1):
    if cellObj.coordinate == 'D{}'.format(row_count):