Comment puis-je utiliser openpyxl et maintenir la structure OOP?

J'utilise Python pour faire des simulations et utiliser openpyxl pour générer les rapports. Maintenant, la simulation est que les résultats doivent être divisés en plusieurs feuilles d'un file excel. Selon les principes d'OOP, ma structure devrait avoir une class de simulateur de base qui implémente les opérations de base et plusieurs classs dérivées qui implémentent des modifications au simulateur. Puisque les fonctions liées à une class doivent restr avec la class, je souhaite que les feuilles de rapport soient générées par les classs dérivées (avec tous leurs styles et formatting, etc.). Ensuite, peut-être une class ou une fonction de pilote qui prend toutes ces fiches de rapport et les met dans un livre de travail. Mais pour autant que je puisse le dire, il n'y a aucun moyen de copyr une feuille de travail dans openpyxl. Maintenant, il semble que j'ai rompu les templates OOP. Y at-il une issue?

modifier

Voici un exemple pour mon code. Il s'agit d'une version gratuite en graisse coupée, la vraie class n'est pas si simple

from openpyxl import Workbook from openpyxl.styles import Font class sim1:#this will inherit from another class sim which has basic operations def __init__(self): #assume function calling and complex math here self.x = 1 def f1OverRide(self): #over rides some function in sim to implement custom method for sim1 (several of these) return 23 def get_sheet(self): wb = Workbook() ws = wb.active ws['A1'] = self.x #example formatting real formatting is pretty complex ws['A1'].font = Font(size=12,name='Calibri') return ws class sim2:#this will inherit from another class sim which has basic operations def __init__(self): #assume function calling and complex math here self.x = 12 def f1OverRide(self): #over rides some function in sim to implement custom method for sim1 (several of these) return 42 def get_sheet(self): wb = Workbook() ws = wb.active ws['A1'] = self.x #example formatting, real formatting is pretty complex ws['A1'].font = Font(size=14,name='Calibri',color='ff2223') return ws s1 = sim1() s2 = sim2() # now I want to get the sheets for sim1 and sim2 and combine in 1 workbook wb = Workbook() ws1 = s1.get_sheet() ws2 = s2.get_sheet() # dont know what to do now :( openpyxl can not copy sheet into this workbook 

OOP copyr des feuilles de travail entre les classurs , par exemple:

 from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') à partir d'Openpyxl import Workbook from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') from openpyxl.styles import Police from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') à partir de copy Copier copy from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') class sim (): from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') def __init __ (self, n): from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') self.n = n from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') def get_sheet (auto): from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') # ... from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') wb = classur () from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') ws = wb.active from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') ws ['A1'] = 'sim' + str (self.n) from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') si self.n == 1: from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') ws ['A1']. font = Police (size = 12, name = 'Calibri') from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') ws ['A1']. font = Police (taille = 14, nom = 'Calibri', couleur = 'ff2223') from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') return ws from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') class sim_Workbook (classur): from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') # surcharge Carnet de travail.copy_worksheet from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') def copy_worksheet (auto, from_worksheet): from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') # Créez une nouvelle feuille vide et ajoutez-la à elle-même (classur) from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') ws = self.create_sheet (title = from_worksheet.title) from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') pour row, row_data dans enumerate (from_worksheet.rows, 1): from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') pour colonne, from_cell dans enumerate (row_data, 1): from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') cell = ws.cell (row = row, column = column) from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') cell.value = from_cell.value from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') cell.font = copy (from_cell.font) from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') s1 = sim (1) from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') s2 = sim (2) from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') wb = sim_Workbook () from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') wb.copy_worksheet (s1.get_sheet ()) from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') wb.copy_worksheet (s2.get_sheet ()) from openpyxl import Workbook from openpyxl.styles import Font from copy import copy class sim(): def __init__(self, n): self.n = n def get_sheet(self): #... wb = Workbook() ws = wb.active ws['A1'] = 'sim'+str(self.n) if self.n == 1: ws['A1'].font = Font(size=12,name='Calibri') else: ws['A1'].font = Font(size=14, name='Calibri', color='ff2223') return ws class sim_Workbook(Workbook): # overload Workbook.copy_worksheet def copy_worksheet(self, from_worksheet): # Create new empty sheet and append it to self(Workbook) ws = self.create_sheet( title=from_worksheet.title ) for row, row_data in enumerate(from_worksheet.rows,1): for column, from_cell in enumerate(row_data,1): cell = ws.cell(row=row, column=column) cell.value = from_cell.value cell.font = copy(from_cell.font) s1 = sim(1) s2 = sim(2) wb = sim_Workbook() wb.copy_worksheet( s1.get_sheet() ) wb.copy_worksheet( s2.get_sheet() ) wb.save('../test/test.xlsx') 

#example formater le formatting réel est assez complexe

Vous devez copyr votre formatting complexe , style par style, comme le montre la font dans l'exemple. Cela pourrait entraîner une énorme charge de travail , en fonction du nombre de cellules que vous devez copyr.
Lisez ceci pour get un indice à propos de cela, mais vous ne pouvez pas le faire 1: 1 pendant que vous copyz du classur vers les styles de copy du classur -de-un-gamme-à-autre-scope

Testé avec Python: 3.4.2 – openpyxl: 2.4.1 – LibreOffice: 4.3.3.2