2012-07-24 2 views
0

J'utilise python pour ouvrir un fichier Excel et apporter quelques modifications, puis je dois l'enregistrer. Je peux tout faire sauf la partie sauvegarde. Comment puis-je obtenir python pour enregistrer le fichier. Si je le sauvegarde manuellement, j'obtiens la boîte pop-up et je peux cliquer sur sauvegarder, mais je ne veux pas avoir à cliquer manuellement sur sauvegarder. Je veux que python le sauvegarde et ferme Excel. J'ai besoin d'aide, c'est ce que j'ai. mais ça ne marchera pas. Je peux l'obtenir pour économiser mais pas fermer ????python Win32 Enregistrer

import win32com.client 
import os 


xl = win32com.client.DispatchEx("Excel.Application") 
xl.workbooks.open("C:\file.xlsm") 
xl.run("file.xlsm!macro") 
xl.Visible = True 
xl.save = true 
xl.close 

Répondre

2

Vous devez obtenir un crochet à l'objet de classeur et d'appliquer la sauvegarde comme argument à la méthode close:

xl = win32com.client.DispatchEx("Excel.Application") 
wb = xl.workbooks.open("C:\file.xlsm") 
xl.run("file.xlsm!macro") 
xl.Visible = True 
wb.Close(savechanges=1) 
xl.Quit() 
0

eu le même problème, ainsi que d'obtenir les valeurs des formules, cette est ce que je l'ai fait (cette partie est après que je mets les formules d'un endroit différent et enregistré la feuille de calcul Excel):

 import win32com.client as win 

    xl=win.Dispatch('Excel.Application') 
    wb = xl.Workbooks.Open('filepath') 
    xl.Visible = True 
    wb.Close(SAVE_ATTRIBUTE_VALUES) 
    xl.Quit() 

puis quand vous ouvrez e feuille de calcul électronique ou appelez:

 wb = openpyxl.load_workbook('filepath', data_only=True) 
    ws = wb.get_sheet_by_name('Sheet1') 
    print ws['A1'].value 

il vous donne la valeur de tout ce qui est chargé à l'aide de la formule, mais vous pourriez avoir besoin d'ajouter un peu

time.sleep(sek) 

pour l'obtenir à attendre pour les valeurs à charger avant la fermeture

Questions connexes