Ajouter une méthode de format dans xlsxwriter plusieurs formats

Dec 01 2020

J'essaye le code suivant et cela fonctionne bien. Mais je me demande s'il existe une approche courte pour traiter la fonction d'ajout de format qui est présente dans le package de xlsxwriter. Voici le code pour plus de clarification

import pandas as pd
import xlsxwriter

writer = pd.ExcelWriter('pandas_excel.xlsx', engine='xlsxwriter')
new_df.to_excel(writer, sheet_name='Sheet1')

workbook  = writer.book

format_right_to_left = workbook.add_format()
format_right_to_left.set_reading_order(2)

myformat = workbook.add_format()
myformat.set_reading_order(2)
myformat.set_align('center')
myformat.set_align('vcenter')

worksheet = writer.sheets['Sheet1']
worksheet.right_to_left()

worksheet.set_column('B:G', 12, myformat)
worksheet.set_column('A:A', 16, myformat)
writer.save()
writer.close()

Dans le code, j'ai ces lignes d'ajout de format

myformat = workbook.add_format()
myformat.set_reading_order(2)
myformat.set_align('center')
myformat.set_align('vcenter')

Ma question: comment raccourcir de telles lignes pour être plus flexible et pour pouvoir ajouter de plus en plus de formats de manière simple?

Réponses

2 buran Dec 01 2020 at 09:22

Vous pouvez transmettre des propriétés sous forme de dict à add_format().

my_format = workbook.add_format({'reading_order':2, 'align':'center', 'valign':'vcenter'})

Vous pouvez en lire plus ici

EDIT: exemple de travail complet, avec bordure

import pandas as pd
import xlsxwriter

data = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=data)

with pd.ExcelWriter('pandas_excel.xlsx', engine='xlsxwriter') as writer:
    df.to_excel(writer, sheet_name='Sheet1')
    workbook  = writer.book
    my_format = workbook.add_format({'reading_order':2, 'align':'center', 'valign':'vcenter', 'border':1})
    worksheet = writer.sheets['Sheet1']
    worksheet.set_column('B:G', 12, my_format)
    worksheet.set_column('A:A', 16, my_format)