Convertir Clase Definida por el Usuario a Excel
Convertir Clase Definida por el Usuario a Excel
A veces, tenemos una colección de clases, y si queremos importar información de clases en un archivo Excel, una solución conveniente es usar el mecanismo de reflexión de Python para incluir tanto los datos de la clase como los nombres de sus variables miembro, sin necesidad de conocer previamente los metadatos específicos de la clase. Aquí hay un ejemplo de fragmento de código que demuestra cómo importar datos de una lista de clases definidas por el usuario en un archivo Excel usando Aspose.Cells para Python via .NET: El archivo ImportCustomObject.py define la información de la clase que se va a importar y usa el mecanismo de reflexión de Python para incluir tanto los datos de la clase como los nombres de las variables miembro en rangos específicos de celdas.
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 |
El archivo TestImportCustomObject.py ilustra un caso de uso simple. Los usuarios pueden consultar este ejemplo o hacer modificaciones menores para importar sus propios datos.
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") |