2017-10-02 7 views
-1

J'ai un fichier .xlsx avec un format de base sur plusieurs feuilles (Feuil1, Feuil2, Feuil3)Ecrire une nouvelle colonne à fichier XLSX existant

Col1 | Col2 | Col3 | Col4 | Col5 
abc1 | abc2 | abc3 | abc4 | abc5 

Lorsque le nombre de colonnes varie. Je veux être en mesure d'écrire un nouveau nom donné d'une feuille. A la minute où j'ai:

import openpyxl 


def get_sheets(): 
    wb = openpyxl.load_workbook('C:/Users/mydir/Desktop/myfile.xlsx') 
    sheets = wb.get_sheet_names() 

sheet3 = "Sheet3" 
sheet4 = "Sheet4" 
for i in sheets: 
    if i == sheet3: 
     # Write column 
    elif i == sheet4: 
     # Write column in different sheet 
    else: 
     continue 


def main(): 
    get_sheets() 

    print 
    print "Script finished." 


if __name__ == "__main__": 
    main() 

Est-ce que openpyxl permet une nouvelle colonne à écrire dans un fichier XLSX existant avec un en-tête et les lignes correspondant au nombre de lignes après l'en-tête?

+0

Ce code ne fait presque rien. –

+0

@CharlieClark le code fait ce qu'il est censé faire à la minute, obtient un deux feuilles particulières d'un xlsx avec plusieurs feuilles. Les commentaires dans le code sont où je veux écrire une nouvelle colonne dans cette feuille. – CEamonn

+0

Je ne vois pas de code essayant d'écrire une cellule, juste un pseudo-code pour la branche. Quelle partie de la bibliothèque ne comprenez-vous pas? –

Répondre

1

Pour ajouter une nouvelle colonne à un fichier xlsx existant, vous pouvez écrire une fonction add_column() comme suit. Cela prend le nom de la feuille et une liste de valeurs que vous souhaitez ajouter:

import openpyxl 

def add_column(sheet_name, column): 
    ws = wb[sheet_name] 
    new_column = ws.max_column + 1 

    for rowy, value in enumerate(column, start=1): 
     ws.cell(row=rowy, column=new_column, value=value) 


wb = openpyxl.load_workbook('C:/Users/mydir/Desktop/myfile.xlsx') 
add_column('Sheet3', ['new header', 'value1', 'value2']) 
wb.save('output.xlsx') # use the same name if required 

Vous pouvez obtenir la feuille de calcul par nom en utilisant simplement wb['Sheet3']. Ensuite, pour obtenir le nombre de colonnes existantes dans la feuille de calcul, utilisez ws.max_column pour obtenir l'index de la dernière colonne. Ajoutez 1 pour votre colonne nouvellement ajoutée.

Ensuite, utilisez la fonction enumerate() de PYthon pour passer en revue la liste des valeurs des colonnes. Pour chacun, il vous donne le numéro de ligne à utiliser et la valeur à écrire dans la cellule.