pero me an pedido que si que alteran el la estructura del archivo del excel y quieran guardarla en al bd de mendiante la aplicacion que salga un mensaje diciendo que no se va poder porque alteraron la estructura
aqui les dejo el codigo esperando su pronta ayuda
views.py
Código Python:
Ver original
class DataExcelProcessView(TemplateView): template_name = 'app/volver.html' def get(self, request, *args, **kwargs): return super(DataExcelProcessView, self).get(request, args, kwargs) def get_context_data(self, **kwargs): ctx = super(DataExcelProcessView, self).get_context_data(**kwargs) ctx['lista_data'] = self.process_file() return ctx def process_file(self): data = DataExcel.objects.get(pk=self.kwargs['pk']) book = xlrd.open_workbook(data.file.path) hoja1 = book.sheet_by_index(0) if data.tienda == 1: fields = ('codsucursal', 'sucursal', 'coddivision', 'division', 'codarea', 'area', 'coddpto', 'dpto', 'codlinea', 'linea', 'codsublinea', 'sublinea', 'codmodelo', 'modelo', 'codvariacion', 'variacion', 'codmarca', 'marca', 'codproveedor', 'proveedor', 'temporada', 'procedencia', 'tiponeg', 'color', 'talla', 'semantig', 'conventa', 'constockoh', 'esrebate', 'concobertura', 'vtaund', 'vtasmf', 'contr', 'costo', 'stock_oh', 'costo_oh', 'cbt') products = [Ripley(id_dataexcel=data,**{fields[i]: cell for i, cell in enumerate(hoja1.row_values(rowid))}) for rowid in range(1, hoja1.nrows)] #print products for product in products: product.color = str(product.color).replace('.0', '') product.talla = str(product.talla).replace('.0', '') product.semantig = str(product.semantig).replace('.0', '') product.vtaund = str(product.vtaund).replace('.0', '') product.stock_oh = str(product.stock_oh).replace('.0', '') product.cbt = str(product.cbt).replace('.0', '') try: Ripley.objects.bulk_create(products) data.active= False data.save() except IntegrityError as e: return False elif data.tienda == 2: fields = ('codigo','consignacion','tipo_trx','fecha_proceso','fecha_trx','local', 'ccosto','subclase','ean','sku','descripcion_sku','caja_vta','nro_trx_vta','cantidad', 'base_imponible_vta','impto_vta','monto_timbrado_vta','tipo_comision','monto_comision', 'costo_vta','igv_costo_vta','total_costo_vta','local_trx_ori','fecha_trx_ori','caja_trx_ori','nro_trx_ori') #print [(fields[i], c) for i, c in enumerate(hoja1.row_values(110))] products_saga = [Saga(id_dataexcel=data,**{fields[i]: cell for i, cell in enumerate(hoja1.row_values(rowid))}) for rowid in range(6, hoja1.nrows)] for saga in products_saga: saga.ean = str(int(saga.ean)) saga.fecha_proceso = date(1899,12,30) + timedelta(days=(int(saga.fecha_proceso))) saga.fecha_trx = date(1899,12,30) + timedelta(days=(int(saga.fecha_trx))) if saga.local_trx_ori == '': saga.local_trx_ori=None if saga.fecha_trx_ori == '': saga.fecha_trx_ori = None else: saga.fecha_trx_ori = date(1899,12,30) + timedelta(days=(int(saga.fecha_trx_ori))) if saga.caja_trx_ori == '': saga.caja_trx_ori=None if saga.nro_trx_ori == '': saga.nro_trx_ori=None try: Saga.objects.bulk_create(products_saga) data.active = False data.save() except IntegrityError as e: return False