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

Python: Open Excel Workbook If it Exists or Create it

我正在尝试找到一个好的方法来查看是否存在 Excel 电子表格,如果它确实使用了它,如果不存在则创建一个新的 excel 文件。请参阅下面的代码片段。奇怪的是,每次我 运行 它,它都会在第一次尝试时崩溃。如果我再次 运行 它,它就会通过。任何想法为什么?我认为它与 xlrd vs. 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()