我试图找到一个好的方法来查看是否存在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()
答案 0 :(得分:3)
我认为崩溃的原因是因为当你在else
部分时,你有一行book=xlwt.Workbook(fname2)
,这意味着书籍类型为Workbook
,没有任何属性被称为sheet_names()
。
当您在book = open_workbook(fname2)
中使用if
时,图书类型为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()