簡體   English   中英

Python將數據框寫入Excel-檢查選項卡是否存在並覆蓋,否則創建

[英]Python writing dataframe to excel - Check if tab exists and overwrite otherwise create

以下代碼在第一次創建選項卡x1和x2並填充數據時正常工作。 再次執行新數據時,它不會檢查選項卡是否已經存在,並添加新的錯誤選項卡x11和x21。

import pandas as pd
import numpy as np
from openpyxl import load_workbook
import os

filename = os.path.dirname(os.path.abspath(__file__))+ '\\Test_excel.xlsx' # path to current directory adding file name

book = load_workbook(filename)
writer = pd.ExcelWriter(filename, engine='openpyxl')
writer.book = book

x1 = np.random.randn(10, 4)
df1 = pd.DataFrame(x1)

x2 = np.random.randn(20, 2)
df2 = pd.DataFrame(x2)

df1.to_excel(writer, sheet_name = 'x1')
df2.to_excel(writer, sheet_name = 'x2')
writer.save()
writer.close()

如果選項卡已經存在,我需要它來覆蓋現有的選項卡數據,否則創建選項卡。 有任何想法嗎?

您問了一個問題,我也將很快在自己的項目中遇到這個問題。 一種解決方案是查找工作表並使用read_excel()引發的異常。 如果沒有例外,則該工作表存在,因此將其刪除。 這是我剛剛在Jupiter上嘗試過的代碼:

from xlrd import XLRDError

try:
    df = pd.read_excel( writer, sheet_name='x1')
except XLRDError: 
    print ("No sheet x1 found")
else:
    print ("Removing sheet")
    del book['x1']

找出Excel文件中是否存在工作表的最快方法可能是使用openpyxl的只讀模式。

from openpyxl import load_workbook
wb = load_workbook("file.xlsx", read_only=True)
'x1' in wb.sheetnames

為了完全控制使用數據框,openpyxl還提供了一些實用程序,可讓您准確地將數據框放置並設置其格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM