将数据从 Excel 导入到 Treeview 时出现问题

Problem importing data from Excel to Treeview

我创建了一个树视图来显示从 excel 文件导入的数据。

    def afficher():
        fichier = r"*.xlsx"
        df = pd.read_excel(fichier)
        for row in df:
            refOF = row['refOF']
            refP = row['refP']
            refC = row['refC']
            nbreP = row['nbreP']
            dateFF = row['dateFF']
            self.ordreF.insert("", 0, values=(refOF, refP, refC, nbreP, dateFF))

但是我遇到了以下错误:

refOF = row['refOF']
TypeError: string indices must be integers

请告诉我如何解决这个问题。

在你的循环中,你实际上不是在行上迭代,而是在列名上迭代。这就是错误消息的原因,因为 row 是具有列名称的字符串,如果您使用 [] 则需要指定整数或基于整数的切片,而不是字符串。 要使您的代码正常工作,您只需稍微修改代码以遍历行:

def afficher():
    fichier = r"*.xlsx"
    df = pd.read_excel(fichier)
    for idx, row in df.iterrows():
        refOF = row['refOF']
        refP = row['refP']
        refC = row['refC']
        nbreP = row['nbreP']
        dateFF = row['dateFF']
        self.ordreF.insert("", 0, values=(refOF, refP, refC, nbreP, dateFF))

另一种方法是将原来的 for 循环替换为以下内容:

for tup in df[['refOF', 'refP', 'refC', 'nbreP', 'dateFF']].itertuples(index=False, name=None):
    self.ordreF.insert("", 0, values=tup)

之所以有效,是因为 df.itertuples(index=False, name=None) returns 一个在分配的列顺序中没有索引的常规元组。元组可以直接输入 values= 参数。