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

时间:2017-05-19 20:02:54

标签: 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

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()

1 个答案:

答案 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()