web-dev-qa-db-fra.com

Ouvrez un classeur avec XLWINGS sans le rendre visible

Je commence à utiliser XLWings (pas du tout que j'aime Excel, mais c'est quelque chose que je DOIS faire). Le fait est que je ne trouve pas le moyen de faire Python ouvrir un classeur sans le montrer.

Il semble que le constructeur des classeurs dans l'ancien XLWings 0.6.4 était xlwings.Workbook, et l'un des arguments était un indicateur 'app_visible' (voir http://docs.xlwings.org/en/v0.6.4 /api.html ).

Cependant, dans le nouveau classeur v0.9.2 a été remplacé par Book, et Book n'a pas un tel indicateur ( http://docs.xlwings.org/en/stable/api.html ). L'objet App l'a, et je pensais que c'était la voie à suivre. J'ai donc codé:

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

Mais, malheureusement, lorsque

book = xw.Book(filename)

est exécuté l'attribut "visible" de l'application devient soudainement True et le livre est affiché. Je ne sais pas s'il s'agit d'une fonctionnalité souhaitée ou d'un comportement inattendu. Quoi qu'il en soit, des idées comment dois-je le faire?

22
zeycus

Voici mon fragment de code de travail:

    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()
2
Alexey Korolkov

Vous pouvez essayer "avec open", par exemple

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)
1
Vinny122004

Vous pouvez également essayer:

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