pandas追加sheet到已有sheet的excel文件会覆盖的问题

pandas追加sheet到已有sheet的excel文件会覆盖的问题

问题:新建excel的sheet页的时候之前的表会消失,在网上找到如下解决办法:https://blog.csdn.net/qq_44315987/article/details/104100281,但是仍然不可以用。
研究了一下午,终于跑通了。

方法一:用这种方法在pycharm中可以正常运行,在影刀编码版不太通用。

import numpy as np
import pandas as pd
import openpyxl

filePath="D:/desktop/第一题+汇总成交率.xlsx"
# 1)出错了之后重新打开一下
try:
    # this statement shall raise error for Badzip file
    wb_obj = openpyxl.load_workbook(filename=filePath)
except:
    # try to create a new file and save at same path
    wb_obj = openpyxl.Workbook()
    wb_obj.save(filePath)
    wb_obj = openpyxl.load_workbook(filename=filePath)
# 2)创建excel写入对象
writer = pd.ExcelWriter(filePath, engine="openpyxl")
writer._book = wb_obj
# 3)写入数据
data3 = pd.DataFrame(np.random.randn(10, 5))
data3.to_excel(writer, sheet_name='新建的表')
#writer._save()#不要用这个来保存
# 4)关闭
writer.close()
wb_obj.close()

在这里插入图片描述
方法二:通用,不错

import pandas as pd

filePath = "D:/desktop/第一题+汇总成交率.xlsx"
# 加载原始数据
data = pd.read_excel(filePath, sheet_name='成交记录登记',header=None)

# 对原始数据进行处理,并将结果保存到result变量中
result = pd.DataFrame([[1, 2]], columns=["A", "B"])

# 创建一个ExcelWriter对象
writer = pd.ExcelWriter(filePath, engine='xlsxwriter')

# 将原始数据写入到Excel文件中
data.to_excel(writer, sheet_name='成交记录登记', index=False,header=False)

# 将处理后的结果写入到新的sheet页中
result.to_excel(writer, sheet_name='结果2', index=False,header=False)

# 关闭ExcelWriter对象
writer._save()
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 `ExcelWriter` 对象来进行追加写入 sheet。具体的方法如下: 1. 使用 `pandas.read_excel()` 方法读取已有Excel 文件,同时设置 `sheet_name=None`,这样可以将所有的 sheet 读取为字典类型的数据结构。 ```python import pandas as pd # 读取已有Excel 文件 excel_file = pd.read_excel('example.xlsx', sheet_name=None) ``` 2. 创建一个新的 `ExcelWriter` 对象,并指定要写入的文件名。 ```python # 创建一个新的 ExcelWriter 对象 with pd.ExcelWriter('example.xlsx', mode='a') as writer: # 将已有sheet 写入到新文件中 for sheet_name, df in excel_file.items(): df.to_excel(writer, sheet_name=sheet_name, index=False) ``` 3. 使用 `pandas.DataFrame.to_excel()` 方法将新的数据写入到指定的 sheet 中。 ```python # 创建要写入的新数据 new_data = pd.DataFrame({'col1': [1, 2, 3], 'col2': ['A', 'B', 'C']}) # 将新数据写入到指定的 sheet 中 new_data.to_excel(writer, sheet_name='Sheet3', index=False) ``` 完整的代码如下: ```python import pandas as pd # 读取已有Excel 文件 excel_file = pd.read_excel('example.xlsx', sheet_name=None) # 创建一个新的 ExcelWriter 对象 with pd.ExcelWriter('example.xlsx', mode='a') as writer: # 将已有sheet 写入到新文件中 for sheet_name, df in excel_file.items(): df.to_excel(writer, sheet_name=sheet_name, index=False) # 创建要写入的新数据 new_data = pd.DataFrame({'col1': [1, 2, 3], 'col2': ['A', 'B', 'C']}) # 将新数据写入到指定的 sheet 中 new_data.to_excel(writer, sheet_name='Sheet3', index=False) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值