Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/09/2014, 12:50
andy2507
 
Fecha de Ingreso: julio-2011
Ubicación: Peru
Mensajes: 92
Antigüedad: 12 años, 9 meses
Puntos: 1
verificar la estructura de excel es la correcta

Hola tengo mi aplicacion que lee 2 tipos de archivos de excel y los datos del excel los guarda en en una base de datos

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
  1. class DataExcelProcessView(TemplateView):
  2.     template_name = 'app/volver.html'
  3.  
  4.     def get(self, request, *args, **kwargs):
  5.         return super(DataExcelProcessView, self).get(request, args, kwargs)
  6.  
  7.     def get_context_data(self, **kwargs):
  8.         ctx = super(DataExcelProcessView, self).get_context_data(**kwargs)
  9.         ctx['lista_data'] = self.process_file()
  10.         return ctx
  11.  
  12.     def process_file(self):
  13.         data = DataExcel.objects.get(pk=self.kwargs['pk'])
  14.         book = xlrd.open_workbook(data.file.path)
  15.         hoja1 = book.sheet_by_index(0)
  16.  
  17.         if data.tienda == 1:
  18.  
  19.             fields = ('codsucursal', 'sucursal', 'coddivision', 'division', 'codarea', 'area', 'coddpto', 'dpto', 'codlinea',
  20.                         'linea', 'codsublinea', 'sublinea', 'codmodelo', 'modelo', 'codvariacion', 'variacion', 'codmarca',
  21.                         'marca', 'codproveedor', 'proveedor', 'temporada', 'procedencia', 'tiponeg', 'color', 'talla',
  22.                         'semantig', 'conventa', 'constockoh', 'esrebate', 'concobertura', 'vtaund', 'vtasmf', 'contr',
  23.                         'costo', 'stock_oh', 'costo_oh', 'cbt')
  24.  
  25.             products = [Ripley(id_dataexcel=data,**{fields[i]: cell for i, cell in enumerate(hoja1.row_values(rowid))})
  26.                                     for rowid in range(1, hoja1.nrows)]
  27.             #print products
  28.  
  29.             for product in products:
  30.                 product.color = str(product.color).replace('.0', '')
  31.                 product.talla = str(product.talla).replace('.0', '')
  32.                 product.semantig = str(product.semantig).replace('.0', '')
  33.                 product.vtaund = str(product.vtaund).replace('.0', '')
  34.                 product.stock_oh = str(product.stock_oh).replace('.0', '')
  35.                 product.cbt = str(product.cbt).replace('.0', '')
  36.  
  37.             try:
  38.                 Ripley.objects.bulk_create(products)
  39.                 data.active= False
  40.                 data.save()
  41.  
  42.             except IntegrityError as e:
  43.                     return False
  44.  
  45.         elif data.tienda == 2:
  46.  
  47.             fields = ('codigo','consignacion','tipo_trx','fecha_proceso','fecha_trx','local',
  48.                         'ccosto','subclase','ean','sku','descripcion_sku','caja_vta','nro_trx_vta','cantidad',
  49.                         'base_imponible_vta','impto_vta','monto_timbrado_vta','tipo_comision','monto_comision',
  50.                         'costo_vta','igv_costo_vta','total_costo_vta','local_trx_ori','fecha_trx_ori','caja_trx_ori','nro_trx_ori')
  51.  
  52.             #print [(fields[i], c) for i, c in enumerate(hoja1.row_values(110))]
  53.  
  54.             products_saga = [Saga(id_dataexcel=data,**{fields[i]: cell for i, cell in enumerate(hoja1.row_values(rowid))})
  55.                                             for rowid in range(6, hoja1.nrows)]
  56.  
  57.  
  58.             for saga in products_saga:
  59.                 saga.ean = str(int(saga.ean))
  60.                 saga.fecha_proceso = date(1899,12,30) + timedelta(days=(int(saga.fecha_proceso)))
  61.                 saga.fecha_trx = date(1899,12,30) + timedelta(days=(int(saga.fecha_trx)))
  62.  
  63.                 if saga.local_trx_ori == '':
  64.                     saga.local_trx_ori=None
  65.  
  66.                 if saga.fecha_trx_ori == '':
  67.                     saga.fecha_trx_ori = None
  68.                 else:
  69.                    saga.fecha_trx_ori = date(1899,12,30) + timedelta(days=(int(saga.fecha_trx_ori)))
  70.  
  71.                 if saga.caja_trx_ori == '':
  72.                     saga.caja_trx_ori=None
  73.  
  74.                 if saga.nro_trx_ori == '':
  75.                     saga.nro_trx_ori=None
  76.  
  77.  
  78.             try:
  79.                 Saga.objects.bulk_create(products_saga)
  80.                 data.active = False
  81.                 data.save()
  82.             except IntegrityError as e:
  83.                     return False