鱼C论坛

 找回密码
 立即注册
楼主: laiyuanjie

我想在ttk的treeview里面展示pandas的Dataframe该怎么做

[复制链接]
发表于 2024-3-31 18:58:46 | 显示全部楼层
laiyuanjie 发表于 2024-03-31 18:58
那不就回到原点了吗?不就没办法写入了吗?


非常抱歉给你带来困惑。如果你想覆盖现有的'Sheet1'工作表并写入数据,你可以将`if_sheet_exists`参数设置为'overwrite',如下所示:
self.file.to_excel(writer, sheet_name="Sheet1", index=False, encoding="utf-8", startrow=self.get_last_row(), if_sheet_exists='overwrite')

这样,如果'Sheet1'工作表已经存在,它将会被覆盖,并将新数据写入该工作表。这样你就能够重新写入数据到现有的'Sheet1'工作表中了。

希望这次解答能帮到你,如果还有其他问题,请随时追问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-31 18:59:17 | 显示全部楼层
FishC 发表于 2024-3-31 18:58
非常抱歉给你带来困惑。如果你想覆盖现有的'Sheet1'工作表并写入数据,你可以将`if_sheet_exists`参数 ...

我要的是续写进去啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-31 18:59:30 | 显示全部楼层
laiyuanjie 发表于 2024-03-31 18:59
我要的是续写进去啊


非常抱歉,我误解了你的问题。如果你想继续将数据写入现有的'Sheet1'工作表而不是覆盖它,你可以使用`if_sheet_exists`参数设置为'append',如下所示:self.file.to_excel(writer, sheet_name="Sheet1", index=False, encoding="utf-8", startrow=self.get_last_row(), if_sheet_exists='append')这样,新的数据将被追加到现有的'Sheet1'工作表的末尾,而不会覆盖原有的数据。希望这次回答能够帮到你,如果还有其他问题,请随时追问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-31 19:00:28 | 显示全部楼层
FishC 发表于 2024-3-31 18:59
非常抱歉,我误解了你的问题。如果你想继续将数据写入现有的'Sheet1'工作表而不是覆盖它,你可以使用`i ...

class InsertCsv:
    def __init__(self):
        self.csv_path = os.path.join(os.getcwd(), "csv")

    def insert(self, df):
        self.file, self.min, self.max, self.sum = df
        self.year = str(self.max[:4]) + ".xlsx"
        self.file_path = os.path.join(self.csv_path, self.year)
        self.is_file_exist()

        if not os.path.isfile(self.file_path):
            # 文件不存在,创建新文件并写入数据
            self.file.to_excel(self.file_path, sheet_name="Sheet1", index=False, encoding="utf-8")
        else:
            # 文件已存在,打开文件追加数据
            writer = pd.ExcelWriter(self.file_path, mode='a', engine='openpyxl')
            writer.book = openpyxl.load_workbook(self.file_path)
            writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets)
            self.file.to_excel(writer, sheet_name="Sheet1", index=False, encoding="utf-8", startrow=self.get_last_row())
            writer.save()
            writer.close()

    def is_file_exist(self):
        if not os.path.isdir(self.csv_path):
            os.makedirs(self.csv_path)

    def get_last_row(self):
        wb = openpyxl.load_workbook(self.file_path)
        sheet = wb['Sheet1']
        return sheet.max_row + 1


这个代码,,,我要续写,,,怎么弄,,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-31 19:01:07 | 显示全部楼层
laiyuanjie 发表于 2024-03-31 19:00
class InsertCsv:
    def __init__(self):
        ...


如果你想对这段代码进行续写,你可以在`InsertCsv`类中添加一个新的方法来实现你的需求。下面是一个示例代码,展示了如何根据输入的关键字筛选数据并将结果写入Excel文件:
class InsertCsv:
    def __init__(self):
        self.csv_path = os.path.join(os.getcwd(), "csv")
        
    def insert(self, df):
        self.file, self.min, self.max, self.sum = df
        self.year = str(self.max) + ".xlsx"
        self.file_path = os.path.join(self.csv_path, self.year)
        self.is_file_exist()
        
        if not os.path.isfile(self.file_path):
            # 文件不存在,创建新文件并写入数据
            self.file.to_excel(self.file_path, sheet_name="Sheet1", index=False, encoding="utf-8")
        else:
            # 文件已存在,打开文件追加数据
            writer = pd.ExcelWriter(self.file_path, mode='a', engine='openpyxl')
            writer.book = openpyxl.load_workbook(self.file_path)
            writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets)
            self.file.to_excel(writer, sheet_name="Sheet1", index=False, encoding="utf-8", startrow=self.get_last_row())
            writer.save()
            writer.close()
    
    def is_file_exist(self):
        if not os.path.isdir(self.csv_path):
            os.makedirs(self.csv_path)
    
    def get_last_row(self):
        wb = openpyxl.load_workbook(self.file_path)
        sheet = wb['Sheet1']
        return sheet.max_row + 1
    
    def filter_data(self, keyword):
        df_filtered = self.file[self.file['绰号'].str.contains(keyword)]
        return df_filtered

# 示例使用
insert_csv = InsertCsv()
# 假设你有一个名为"df"的pandas DataFrame
filtered_df = insert_csv.filter_data("小")
# 将筛选后的结果插入Excel文件
insert_csv.insert(filtered_df)

在上面的代码中,我在`InsertCsv`类中添加了一个名为`filter_data`的方法。这个方法接收一个关键字作为参数,根据关键字筛选数据,并返回筛选后的DataFrame。然后,我们可以使用`insert`方法将筛选结果插入到Excel文件中。

希望这次回答能够帮到你,如果还有其他问题,请随时追问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-31 21:40:33 | 显示全部楼层
看乐了,fishC:“非常抱歉~”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-8 08:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表