Python:打开 Excel 工作簿(如果存在)或创建它



我正在尝试一种好方法来查看Excel电子表格是否存在,如果确实使用它,如果不创建一个新的Excel文件。 请参阅下面的代码片段。 奇怪的是每次我运行它时,它在第一次尝试时都会崩溃。 如果我再次运行它,它会巡航。 知道为什么吗? 我认为这与 xlrd 与 xlwt 有关,但尚未找到解决方案。 所有模块都是最新的。

import pandas as pd
import xlsxwriter
from xlrd import open_workbook
import xlwt
import os.path
fname=r'testmonthlyz.xlsm'
fname2=r'testmonthlyoutput2.xlsx'
#workbook = xlsxwriter.Workbook(fname2)    
if os.path.isfile(fname2):
    print('old file')
    book=open_workbook(fname2)
else:
    print('new file')
    book=xlwt.Workbook(fname2)
    ws = book.add_sheet('Tested')
sheet_names=book.sheet_names()
我相信崩溃的

原因是因为当您在else部分时,您有book=xlwt.Workbook(fname2)行,这意味着书籍类型是Workbook它没有称为sheet_names()的属性。
当你在if内使用book = open_workbook(fname2)时,书籍类型是Book它确实具有sheet_names()属性。
我对此的解决方案,即使不是最好的方法,但我认为它将解决您正在处理的问题。更改以下行

import pandas as pd
import xlsxwriter
from xlrd import open_workbook
import xlwt
import os.path
fname=r'testmonthlyz.xlsm'
fname2=r'testmonthlyoutput2.xlsx'
workbook = xlsxwriter.Workbook(fname2)    
if os.path.isfile(fname2):
    print('old file')
    book=open_workbook(fname2)
else:
    print('new file')
    workbook2=xlwt.Workbook(fname2)
    ws = workbook2.add_sheet('Tested')
    workbook2.save(fname2)
    book = open_workbook(fname2)
sheet_names=book.sheet_names()

最新更新