首页 > 解决方案 > 通过python将字典附加到EXCEL文件中

问题描述

这是我的功能,通过使用它我试图创建(如果文件不存在)或将字典附加到文件中。

headers = dict.keys()


if not os.path.isfile('metrics1.csv'):
    with open('metrics1.csv', 'w')as csv_file:
        csv_file.writelines(', '.join(headers))


if not os.path.isfile('metrics1.xlsx'):
    book = xlsxwriter.Workbook('metrics1.xlsx')
    sheet = book.add_worksheet("TestSheet")
    for (idx, header) in enumerate(headers):
        sheet.write(0, idx, header)
    book.close()


with open('metrics1.csv', 'a+') as csv_file:
    book = load_workbook('metrics1.xlsx')
    sheet = book.get_sheet_by_name('TestSheet')


    for d in dict:
        values = [d[key] for key in headers]
        csv_string = '\n'+', '.join(values)
        csv_file.write(csv_string)
        sheet.append(values)
    book.save(filename='metrics1.xlsx')

我收到以下错误,

  values = [d[key] for key in headers]
  TypeError: string indices must be integers

标签: pythoncsvopenpyxlxlsxwriter

解决方案


你需要修复几件事。首先,不要命名任何变量dictdict是一个 python 内置关键字。我们假设您已data在下面的代码中对其进行了重命名。

其次,您可以更轻松地创建标题列表:

headers = list(data.keys())  #  or [ key for key in data ]

第三,也是最后,是您要从字典中提取值的行:

values = [data[key] for key in headers]

希望这可以帮助!


推荐阅读