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

Python:打开Excel工作簿(如果存在)或创建它,python,python-3.x,xlrd,xlsxwriter,xlwt,Python,Python 3.x,Xlrd,Xlsxwriter,Xlwt,我正试图找到一个好方法,看看是否存在Excel电子表格,如果它确实使用了它,如果不创建一个新的Excel文件。请参阅下面的代码片段。奇怪的是每次我运行它,它在第一次尝试时就崩溃了。如果我再运行一次,它就会巡游过去。你知道为什么吗?我认为这与xlrd和xlwt有关,但还没有找到解决方案。所有模块都是最新的 import pandas as pd import xlsxwriter from xlrd import open_workbook import xlwt import os.path

我正试图找到一个好方法,看看是否存在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\u names()的属性
使用
if
中的
book=open\u工作簿(fname2)
时,图书类型为
book
,它具有
sheet\u 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()

我认为崩溃的原因是,当您在
else
部分时,您有一行
book=xlwt.Workbook(fname2)
,这意味着图书类型是
Workbook
,它没有名为
sheet\u names()的属性
使用
if
中的
book=open\u工作簿(fname2)
时,图书类型为
book
,它具有
sheet\u 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()

workbook=xlsxwriter.workbook(fname2)
做什么?它用于程序的另一部分。谢谢你的帮助!
workbook=xlsxwriter.workbook(fname2)
做什么?它用于程序的另一部分。谢谢你的帮助!我要试一试。谢谢你在这方面花时间。我会让你知道结果的!谢谢干得很好,我试试看。谢谢你在这方面花时间。我会让你知道结果的!谢谢工作得很好。