Convertir une classe définie par l’utilisateur en Excel

Convertir une classe définie par l’utilisateur en Excel

Parfois, nous avons une collection de classes, et si nous voulons importer des informations de classe dans un fichier Excel, une solution pratique consiste à utiliser le mécanisme de réflexion de Python pour inclure à la fois les données de la classe et les noms de ses variables membres, sans avoir besoin de connaître à l’avance les métadonnées spécifiques de la classe. Voici un exemple de code montrant comment importer des données d’une liste de classes définies par l’utilisateur dans un fichier Excel en utilisant Aspose.Cells pour Python via .NET : Le fichier ImportCustomObject.py définit les informations de la classe à importer et utilise le mécanisme de réflexion de Python pour inclure à la fois les données de la classe et les noms des variables membres dans des plages de cellules spécifiques.

from datetime import date, datetime
import aspose.cells as ac
class MyClass:
def __init__(self, Name, Age, Is_Student, Date, DateTime, Height):
self.Name = Name
self.Age = Age
self.Is_Student = Is_Student
self.Date = Date
self.DateTime = DateTime
self.Height = Height
def import_custom_object(people, cells, row, column, import_options):
# If a header needs to be displayed, write the header (attribute names)
if import_options.is_field_name_shown:
header = vars(people[0]).keys()
for col_index, attr_name in enumerate(header):
cells.get(row, column + col_index).put_value(attr_name)
row += 1
# Write the attribute values of the object
for obj in people:
for col_index, (attr_name, attr_value) in enumerate(vars(obj).items()):
cell = cells.get(row, column + col_index)
if isinstance(attr_value, (int, float, str, bool)):
cell.put_value(attr_value)
elif isinstance(attr_value, (date, datetime)):
cell.put_value(attr_value)
style = cell.get_style()
if isinstance(attr_value, datetime):
style.custom = "yyyy-MM-dd HH:mm:ss"
elif isinstance(attr_value, date):
style.number = 14 # Excel Date Format
cell.set_style(style)
else:
cell.put_value(str(attr_value))
row += 1

Le fichier TestImportCustomObject.py illustre un cas d’utilisation simple. Les utilisateurs peuvent se référer à cet exemple ou effectuer de légères modifications pour importer leurs propres données.

from datetime import date, datetime
import aspose.cells as ac
from ImportCustomObject import MyClass, import_custom_object
people = [
MyClass("Bob", 30, True, date(2024, 3, 9), datetime.now(), 112.0),
MyClass("Lucy", 25, False, date(2024, 3, 10), datetime.now(), 111.1),
MyClass("Tom", 45, True, date(2024, 3, 11), datetime.now(), 110.8),
]
workbook = ac.Workbook()
worksheet = workbook.worksheets[0]
cells = worksheet.cells
import_options = ac.ImportTableOptions()
# Display the table header or not
import_options.is_field_name_shown = True
start_row = 4
start_column = 1
import_custom_object(people, cells, start_row, start_column, import_options)
workbook.save("import_custom_object.xlsx")