如何测试 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):
我正在尝试使用 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):