我有密码:
def add_to_database(object_name, value):
workbook = openpyxl.load_workbook(DATABASE_FILE)
worksheet = workbook[DATABASE_SHEET]
object_row = None
for row in worksheet.iter_rows(min_row = 1, max_row = worksheet.max_row + 1, values_only = True):
if row[0] == object_name:
object_row = row
break
if object_row:
worksheet.cell(row = object_row[0].row, column = 2).value += value
else:
last_row = worksheet.max_row
worksheet.cell(row = last_row, column = 1).value = object_name
worksheet.cell(row = last_row, column = 2).value = value
workbook.save(DATABASE_FILE)
workbook.close()
我得到一个错误: AttributeError: 'str' 对象没有属性 'row' 在线上: worksheet.cell(row = object_row[0].row, column = 2).value += value
我做错了什么?
你正试图从一个字符串中获取行值,而这个字符串没有行值。此外,您还需要创建一个将行号考虑在内的循环才能执行此操作。
import openpyxl
DATABASE_FILE = "your_database_file.xlsx"
DATABASE_SHEET = "your_database_sheet"
def add_to_database(object_name, value):
workbook = openpyxl.load_workbook(DATABASE_FILE)
worksheet = workbook[DATABASE_SHEET]
object_row_num = None
for row_num, row in enumerate(worksheet.iter_rows(min_row=1, max_row=worksheet.max_row, values_only=True), start=1):
if row[0] == object_name:
object_row_num = row_num
break
if object_row_num:
worksheet.cell(row=object_row_num, column=2).value += value
else:
last_row = worksheet.max_row + 1
worksheet.cell(row=last_row, column=1).value = object_name
worksheet.cell(row=last_row, column=2).value = value
workbook.save(DATABASE_FILE)
workbook.close()
未经测试,但应该 工作。 Lmk 如果没有。