Python将数据框写入Excel-检查选项卡是否存在并覆盖,否则创建

时间:2018-07-11 17:47:18

标签: python excel pandas export-to-excel openpyxl

以下代码在第一次创建选项卡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()

如果选项卡已经存在,我需要它来覆盖现有的选项卡数据,否则创建选项卡。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您问了一个问题,我也将很快在我自己的项目中遇到。一种解决方案是查找工作表并使用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']

答案 1 :(得分:0)

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

PUT music/_doc/1?refresh
{
    "suggest" : {
        "input": [ "Nevermind", "Nirvana" ],
        "weight" : 34
    }
}

为完全控制使用数据框,openpyxl还提供了一些实用程序,可让您准确地将数据框放置和格式化为所需位置。