python 解决使用pandas df.to_excel()删除原有sheet
一、问题引入
你在使用pandas的 df.to_excel(file_path)想要对一个有多张sheet的workbook操作时一定会尴尬的发现:永远只存在最后一次写进去的表,其他的都被清空了。
二、解决办法
1.使用pandas
1import pandas as pd
2import openpyxl
3import xlwings as xw
4
5book = openpyxl.load_workbook(wb_file) #读取你要写入的workbook
6#和pd.read_excel() 用于将Dataframe写入excel。xls用xlwt。xlsx用openpyxl
7writer = pd.ExcelWriter(wb_file, engine='openpyxl')
8##此时的writer里还只是读写器. 然后将上面读取的book复制给writer
9writer.book = book
10#转化为字典的形式
11writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
12#将data写入writer
13data.to_excel(writer,sheet_name="",index=False)
14writer.save()
2.使用xlwings、openpyxl等包
先用pandas读取dataframe,然后将df写入使用xlwings新建的sheet中
1import xlwings as xw
2
3#读取df
4df = pd.read_excel(file_path_df)
5wb = xlwings.Book(file_path_excel)
6#在wb中新建一张新的sheet.可以指定位置
7sht = wb.sheets.add(name="",before=None,after=None)
8#df.values 不然会插入df的索引
9sht.range("A1").value = df.values
10wb.save()
11wb.close()