使用 XLWINGS 打开工作簿而不使其可见

Open a Workbook with XLWINGS without making it visible

我开始使用 XLWings(我一点也不喜欢 Excel,但这是我必须要做的事情)。问题是我无法找到让 Python 在不显示的情况下打开工作簿的方法。

在旧的 XLWings 0.6.4 中,Workbooks 的构造函数似乎是 xlwings.Workbook,其中一个参数是一个标志 'app_visible'(参见 http://docs.xlwings.org/en/v0.6.4/api.html)。

不过,在新的v0.9.2中,Workbook已经被Book取代,Book没有任何这样的flag(http://docs.xlwings.org/en/stable/api.html)。 App 对象确实有它,我认为这是要走的路。所以我编码:

import xlwings as xw

app = xw.App(visible=False)
filename = os.path.join(PATH_EXCEL_SAMPLES, r"rangosConDatos_sample01.xls")
book = xw.Book(filename)
# Do stuff with the info in the book
book.close()  # Ya puedo cerrar el libro.
app.kill()

但是,遗憾的是,当

book = xw.Book(filename)

执行app的'visible'属性突然变为True,显示书。我不知道这是所需的功能还是意外的行为。无论如何,我应该怎么做?

你可以试试'with open',例如

with open ("write.csv", "a", newline='') as file:  
    fields=['score', 'name']                       
    writer=csv.DictWriter(file, fieldnames=fields)
    writer.writerow({'score' : score, 'name' : username})

with open ("write.csv", "r") as file:
    sortlist=[]
    reader=csv.reader(file)
    for i in reader:
        sortlist.append(i)

这是我的工作代码片段:

    import xlwings

    excel_app = xlwings.App(visible=False)
    excel_book = excel_app.books.open('PATH_TO_YOUR_XLSX_FILE')
    excel_book.save()
    excel_book.close()
    excel_app.quit()

您也可以试试:

import xlwings as xw

app = xw.App(visible=False)
book = xw.Book('PATH_TO_YOUR_XLSX_FILE')
sheet = book.sheets('sheetname')
df = sheet.range('A1:D10')
book.close()
app.quit()

#已更正拼写错误

这对我有用:

import xlwings as xw

app = xw.App(visible=False)
readsheet = xw.Book('FILE_PATH').sheets['Sheet1']
df = pd.DataFrame(readsheet.range('A1', 'Z99').value)

从 0.24.3 版本开始,其中 with xw.App 被实现,惯用的方式是:

import xlwings as xw

with xw.App(visible=False) as app:
    book = xw.Book("test.xlsx")

    # Do some stuff e.g.
    book.sheets[0]["A1"].value = 12345

    book.save("test.xlsx")
    book.close()

这样做的好处是,如果您使用隐藏实例并且您的代码失败,那么不会有任何隐藏的 excel 进程留在后台。