如果文件已经打开,xlwings.book会挂起

时间:2018-04-17 17:00:18

标签: python xlwings

如果文件已经打开,如何关闭?

import xlwings as xw
wb = xw.Book(folderpath + 'Metrics - auto.xlsx')

使用try:except:但是需要一种方法来关闭文件以便打开它,或找到文件并使用它?

如果它已经打开,我会收到此错误:

wb = xw.Book(folderpath + 'Metrics - auto.xlsx')
Traceback (most recent call last):

  File "<ipython-input-34-85b6fd35627b>", line 1, in <module>
    wb = xw.Book(folderpath + 'Metrics  - auto.xlsx')

  File "C:\Users\ReDimLearning\AppData\Local\Continuum\anaconda2\lib\site-packages\xlwings\main.py", line 480, in __init__
    impl = app.books.open(fullname).impl

  File "C:\Users\ReDimLearning\AppData\Local\Continuum\anaconda2\lib\site-packages\xlwings\main.py", line 2751, in open
    "Cannot open two workbooks named '%s', even if they are saved in different locations." % name

ValueError: Cannot open two workbooks named 'metrics - auto.xlsx', even if they are saved in different locations.

2 个答案:

答案 0 :(得分:1)

您可以使用

检查工作簿集合
import xlwings as xw
xw.books

并使用以下内容检查您的全名是否已打开:

if myworkbook in [i.fullname for i in xw.books]:
   ...

答案 1 :(得分:0)

我没有使用xlwings包的经验,但查看Book.__init__的{​​{3}},看起来它会自动查找已打开的工作簿的任何实例。如果只有一个,则返回它。如果打开了多个工作簿实例,则会引发错误。如果还没有任何打开的实例,那么它将&#34; connect&#34;它。所以,看起来您不必担心关闭文件。

这与source code对齐,后面写着:

  

xw.Book提供连接书籍的最简单方法:它看起来像   对于所有应用程序实例中的书并返回错误,应该是   同一本书可以在多个实例中开放。

但是,在连接到工作簿后,如果您确实要关闭它,则有一个documentation方法:

  

关闭本书而不保存。