Python recorre hojas de trabajo de Excel y combina celdas
# -*- codificación: utf-8 -*-import xlrdimport uuidclass Student():
def __init__(self, id, **kw) :
p>self.id = id
para k , v en kw.items():
setattr(self, k, v) p>
def __str__(self):
return 's(id=s, columna1=s, columna2=s, columna3=s, columna4=s) ' (
self.__class__.sheet_by_index(0) # El índice de la hoja de trabajo comienza desde 0
sheet2.nrows_num =sheet2.nrows
cols_num =sheet2.ncols.ncols para r en el rango(rows_num) ):
# Clase de entidad de una fila de datos
entity_dict = {}
for c in range(cols_num):
valor_celda = hoja2.row_values(r )[c]
# print('Valor de la columna d en la fila d: [s]' (r, c, hoja2.row_values(r)[c]))
if (cell_value es Ninguno o cell_value == ''):
cell_value = (get_merged_cells_value(sheet2, r, c))
# Crear entidad
the_key = ' column' str(c 1);
# Establece dinámicamente el valor de cada atributo
entity_dict[the_key] = cell_value
entity_dict['id' ] = getUUID()
stu = Estudiante(** entidad_dict)
print(stu) def get_merged_cells(hoja):
"""
Obtiene todas las celdas combinadas en el siguiente formato:
[(4, 5, 2, 4), (5, 6, 2, 4), (1 , 4, 3, 4) ]
(4, 5, 2, 4) significa: la fila comienza desde el subíndice 4 hasta el subíndice 5 (no incluido) y la columna comienza desde el subíndice 2 hasta el subíndice 4 ( no incluido). Cuadrícula
: Hoja de cálculo de parámetros:
: Retorno:
"""
Volver a la hoja de cálculo.
merged_cells celldef get_merged_cells_value(sheet, row_index, col_index):
"""
Primero determine si la celda dada es una celda fusionada;
Si es así, combine celdas , luego devuelve el contenido de las celdas fusionadas
:.return:
"""
merged = get_merged_cells(sheet)
para (rlow, rhigh, clow, chigh) en fusionado:
if (row_index gt;= rlow y fila _index lt; rhigh):
if (col_index gt;= clow y col_index lt; chigh):
cell_value =sheet.cell_value(rlow, clow)
# print('La celda [d, d] pertenece a una celda fusionada con valor [s ]' (row_index, col_index, cell_value))
devolver valor_celda break
return Nonedef getUUID():
return uuid.uuid1().hexif__name__ == "__main__":
read_excel()