Pandas中to_excel实现数据追加或者覆盖到Excel工作表

  这两天在想如何将一些重复的工作用Python实现自动化,但是遇见一些难题,比如用pandas中的to_exce插入数据时会出现覆盖原数据,或者直接直接把工作表给搞没了,整个人都不好了。所以查资料查资料,但是知识都是零零散散,虽然找到一些方法,可还是不能实现自己的需求,于是乎想了半天,不断到的用数据做实验,终于摸索出了一种可以追加和覆盖的方法。以下就是我使用的方法

首先了解的是需要用到的库: pandas openpyxl
提示:不懂的小伙伴可以去官网或者其他地方了解了解哦

以下就是我编写的代码,我将它封装到函数里面的,如果不想用函数,可以根据需要改改哈

import pandas as pd
import openpyxl
'''
实现追加或者覆盖数据
data:DataFramek类型数据
excelname:工作簿名(注意路径!!!)
sheetname:表名
insert_type:w 或者 a+      (当然可以自己定义啦)
'''
def append_excel(data,excelname,sheetname,insert_type):
    original_file = pd.DataFrame(pd.read_excel(excelname, sheet_name=sheetname))  # 读取原数据文件和表
    original_row = original_file.shape[0]  # 获取原数据的行数
    if insert_type=='w':       #选择写入excel数据方式,w为覆盖模式,a+为追加模式
        startrow=1
    elif insert_type=='a+':
        startrow=original_row + 1
    book = openpyxl.load_workbook(excelname)
    writer = pd.ExcelWriter(excelname, engine='openpyxl')
    writer.book = book
    writer.sheets = dict((ws.title, ws) for ws in book.worksheets)

    # 将data数据写入Excel中
    data.to_excel(writer, sheet_name=sheetname, startrow=startrow, index=False, header=False)
    writer.save()
    
    
if __name__ == '__main__':
    append_excel()     #记得传入参数哦

其实这段代码我觉得真的很好用,如果你有一个工作簿里面很多表,而且需求是在原表基础上修改数据,那么这段代码将解决你的问题,如果其中有错误,望指出,或者有更好的办法的话,一定要告知我呀(* ̄︶ ̄)

  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
pd.to_excel()函数是pandas用于将数据保存到Excel文件的函数。默认情况下,该函数会将数据写入Excel文件的第一个工作,并且会覆盖已存在的文件内容。如果你想要实现追加而不覆盖的功能,可以使用以下方法: 1. 使用openpyxl库: 首先,需要安装openpyxl库(如果还没有安装的话)。然后,可以通过以下步骤实现追加数据而不覆盖: - 使用pandas的read_excel()函数读取已存在的Excel文件,并将其存储在一个DataFrame。 - 将要追加数据存储在一个新的DataFrame。 - 使用openpyxl库打开Excel文件,并获取到工作簿和工作对象。 - 将新的数据DataFrame写入工作的指定位置,可以使用append()方法实现追加。 - 最后,保存并关闭Excel文件。 2. 使用xlwings库: xlwings是一个强大的Python库,可以与Excel进行交互。使用xlwings库可以实现追加数据而不覆盖的功能。以下是大致的步骤: - 使用pandas的read_excel()函数读取已存在的Excel文件,并将其存储在一个DataFrame。 - 将要追加数据存储在一个新的DataFrame。 - 使用xlwings库打开Excel文件,并获取到工作簿和工作对象。 - 将新的数据DataFrame写入工作的指定位置,可以使用xlwings的Range对象实现追加。 - 最后,保存并关闭Excel文件。 这两种方法都可以实现追加数据而不覆盖已存在的内容。具体选择哪种方法取决于你的需求和个人偏好。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值