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

Tyl*_*ell 1 python xlrd xlwt python-3.x xlsxwriter

我正在尝试找到一个好的方法来查看 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()
Run Code Online (Sandbox Code Playgroud)

Mat*_*roh 6

我相信崩溃的原因是当您在该else部分中时,您有一行book=xlwt.Workbook(fname2)表示书籍类型Workbook没有名为 的属性sheet_names()。当您在里面
使用时,书籍类型是具有属性的。 我对此的解决方案,尽管这不是最好的方法,但我认为它会解决您正在处理的问题..更改以下行book = open_workbook(fname2)ifBooksheet_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()
Run Code Online (Sandbox Code Playgroud)