Exportar a excel con ceros a la izquierda

Hola a todos comunidad tengo un problema y es que al exportar a excel un campo con formato texto de 14 caracteres cuando este campo debe exportar con ceros a la izquierda los suprime ejemplo si debe exportar 00141524001012, solo exporta 141524001012 y suprime los ceros, otros si lo9 exporta bien en ese campo, necesito ayuda, mi código es esto en el controlador:




public function actionImprimirfact($id)

{

   


    	spl_autoload_unregister(array('YiiBase','autoload'));

        	require(Yii::app()->basePath.'/extensions/phpexcel/Classes/PHPExcel.php');

        	spl_autoload_register(array('YiiBase', 'autoload'));

        	

 

        	

        	$objPHPExcel = PHPExcel_IOFactory::load("factura.xls");	

        	

        	$objPHPExcel->setActiveSheetIndex(0)			

                    	->setCellValue('AS51', $id);  

       	

        	$model=$this->loadModel($id); 

        	$NFac = $model->nfactura;

   	

	//consulta    	

   $sql="SELECT proveedor.CodREEUP,

   	proveedor.Descripcion,

   	proveedor.Direccion,

   	proveedor.NIT AS NITProv,

   	proveedor.NRegCom AS ReComProv,

   	proveedor.NRegMer,

   	proveedor.CuentaCUC,

   	datossal.fecha,

   	datossal.CodCliente,

   	datossal.CodUEB AS CUEB,

   	entidades.NEnt AS NUEB,

   	datossal.CodMon,

   	datossal.CI,

   	datossal.CodPVen,

   	datossal.nfactura AS Factura,

   	detallesfact.Codprod,

   	detallesfact.cantidad AS Cantidad,

   	productos.NProductos,

   	productos.PreEmp,

   	productos.Impes,

   	turcad.CodOp, 	   

   	clientes.CodREUP AS CodigoCliente,

   	clientes.Descripcion AS NombreCliente,

   	clientes.Direccion AS DireccionCliente,

   	clientes.NIT AS NITCliente,

   	clientes.NRegCom AS RegComCliente,

   	clientes.NRegMer AS RegMerCliente,

   	firmantes.Contrato AS NoContratoCliente,

   	firmantes.Fechaf AS VenceCon,

   	firmantes.Nombre AS NombreFirmante,

   	puntoventas.Descripcion AS PVenta,

   	CASE WHEN datossal.CodMon = 1 

     	THEN 

          	productos.ImpGEIA ELSE 0 

     	END

   	AS ImpGEIA,

   	CASE

      	WHEN datossal.CodMon = 1 OR datossal.CodMon = 3

      	THEN

         	entidades.afavormn

   	END

      	AS afavormn,

   	CASE

      	WHEN datossal.CodMon = 2 OR datossal.CodMon = 3

      	THEN

         	proveedor.afavorcuc

    	END

      	AS afavorcuc,

   	CASE

      	WHEN datossal.CodMon = 2 OR datossal.CodMon = 3

      	THEN

         	proveedor.CuentaCUC

   	END

      	AS CCUCProv,

   	CASE

      	WHEN datossal.CodMon = 1 OR datossal.CodMon = 3

      	THEN

         	entidades.CuentaMN

   	END

      	AS CMNprov,

    	CASE

      	WHEN datossal.CodMon = 3 THEN productos.PreEmp - productos.PrCUC

      	ELSE 0

   	END

      	AS PMN,

   	CASE WHEN datossal.CodMon = 1 THEN productos.ImpGEIA ELSE 0 END

      	AS ImpGEIA,

   	CASE

      	WHEN datossal.CodMon = 1 AND productos.Impes = 2

      	THEN

         	ROUND(

            	productos.PreEmp * detallesfact.cantidad * tasas.rec1 / 100,

            	2)

      	ELSE

         	0

   	END

      	AS Recargo,

   	CASE

      	WHEN datossal.CodMon = 1

      	THEN

         	ROUND(productos.PreEmp, 4)

      	WHEN datossal.CodMon = 1 AND clientes.Grupo = 2

      	THEN

         	ROUND(productos.PreEmp, 4)

      	WHEN datossal.CodMon = 3

      	THEN

         	ROUND((productos.PreEmp - productos.PrCUC), 4)

      	WHEN datossal.CodMon = 2

      	THEN

         	0

   	END

      	AS PrecioMN,

   	CASE

      	WHEN datossal.CodMon = 2 OR datossal.CodMon = 3

      	THEN

         	productos.PrCUC

      	ELSE

         	0

   	END

      	AS PrecioCUC,

   	CASE

      	WHEN datossal.CodMon = 1

      	THEN

         	ROUND(

              	(  productos.PreEmp * detallesfact.cantidad

               	+ (CASE

                     	WHEN datossal.CodMon = 1 AND productos.Impes = 2

                     	THEN

                        	ROUND(

                             	productos.PreEmp

                           	* detallesfact.cantidad

                           	* tasas.rec1

                           	/ 100,

                           	2)

                     	ELSE

                        	0

                  	END))

            	* tasas.ipdl

            	/ 100,

            	4)

      	WHEN datossal.CodMon = 3 AND datossal.CodOp = 2

      	THEN

         	ROUND(

              	(	(productos.PreEmp - productos.PrCUC)

                 	* detallesfact.cantidad

               	+ productos.PrCUC * detallesfact.cantidad)

            	* tasas.ipdl

            	/ 100,

            	4)

      	WHEN datossal.CodMon = 3 AND datossal.CodOp = 4

      	THEN

         	ROUND(

              	(  (productos.PreEmp - productos.PrCUC)

               	* detallesfact.cantidad)

            	* tasas.ipdl

            	/ 100,

            	4)

      	WHEN datossal.CodMon = 2

      	THEN

         	ROUND(

            	productos.PrCUC * detallesfact.cantidad * tasas.ipdl / 100,

            	4)

   	END

      	AS 1PMN,

   	CASE

      	WHEN datossal.CodMon = 2 AND turcad.CodOp = 3

      	THEN

         	ROUND(

            	productos.PrCUC * tasas.ipdl * detallesfact.cantidad / 100,

            	4)

      	ELSE

         	0

   	END

      	AS 1PCUC,

   	CASE

      	WHEN datossal.CodMon = 1 AND turcad.CodOp = 1

      	THEN

         	ROUND(

              	(  productos.PreEmp * detallesfact.cantidad

               	+ (CASE

                     	WHEN datossal.CodMon = 1 AND productos.Impes = 2

                     	THEN

                        	ROUND(

                             	productos.PreEmp

                           	* detallesfact.cantidad

                           	* tasas.rec1

                           	/ 100,

                           	2)

                     	ELSE

                        	0

                  	END))

            	* tasas.iventas

            	/ 100,

            	4)

      	WHEN datossal.CodMon = 3 AND datossal.CodOp = 2

      	THEN

         	ROUND(

              	(	(productos.PreEmp - productos.PrCUC)

                 	* detallesfact.cantidad

               	+ productos.PrCUC * detallesfact.cantidad)

            	* tasas.iventas

            	/ 100,

            	4)

      	WHEN datossal.CodMon = 3 AND datossal.CodOp = 4

      	THEN

         	ROUND(

              	(  (productos.PreEmp - productos.PrCUC)

               	* detallesfact.cantidad)

            	* tasas.iventas

            	/ 100,

            	4)

      	WHEN datossal.CodMon = 2

      	THEN

         	0

      	WHEN datossal.CodMon = 1 AND turcad.CodOp = 5

      	THEN

         	0

   	END

      	AS 2PMN,

   	CASE

      	WHEN	datossal.CodMon = 2

           	OR (datossal.CodMon = 3 AND turcad.CodOp = 4)

      	THEN

         	productos.PrCUC * detallesfact.cantidad * tasas.iventas / 100

      	ELSE

         	0

   	END

      	AS 2PCUC,

   	CASE

      	WHEN clientes.Grupo = 2 AND datossal.CodMon = 1

      	THEN

         	ROUND(

              	Productos.PreEmp

            	* detallesfact.cantidad

            	* tasas.descgrupo

            	/ 100,

            	4)

      	ELSE

         	0

   	END

      	AS Descuento,

  	CASE

      	WHEN datossal.CodMon = 3 AND turcad.CodOp = 3

      	THEN

         	ROUND(productos.PreEmp * detallesfact.cantidad, 2)

      	ELSE

         	0

   	END

      	AS Total,		  

   	productos.UM,

	   clientes.CuentaCUP AS CuentaCUPCliente,

   	clientes.CuentaCUC as CuentaCUCCliente

	FROM  proveedor

   	CROSS JOIN  tasas

   	CROSS JOIN (   (   (   (   (   (   (   (   (	firmantes

                                               	JOIN

                                                   	entidades

                                               	ON (firmantes.CodUEB =

                                                      	entidades.CodUEB))

                                           	JOIN

                                               	datossal

                                           	ON 	(entidades.CodUEB =

                                                      	datossal.CodUEB)

                                              	AND (firmantes.CI =

                                                      	datossal.CI))

                                       	JOIN

                                           	puntoventas

                                       	ON 	(puntoventas.CodPVen =

                                                  	datossal.CodPVen)

                                          	AND (puntoventas.CodUEB =

                                                  	entidades.CodUEB))

                                   	JOIN

                                      	clientes

                                   	ON 	(clientes.CodCliente =

                                              	datossal.CodCliente)

                                      	AND (firmantes.CodCliente =

                                              	clientes.CodCliente))

                               	JOIN

                                   	detallesfact

                               	ON (detallesfact.Id_sal =

                                      	datossal.nfactura))

                           	JOIN

                               	preciomn

                           	ON (detallesfact.Codpr = preciomn.Codpr))

                       	JOIN

                          	productos

                       	ON (detallesfact.Codprod = productos.Codprod))

                  	JOIN

                   	monedas

               	ON (monedas.CodMon = datossal.CodMon))

   	JOIN  turcad

      	ON (turcad.CodOp = datossal.CodOp))	

	WHERE

	 '{$NFac}' =detallesfact.Id_sal

GROUP BY

	detallesfact.Codprod, datossal.nfactura

ORDER BY

  	CUEB";               	

                                          	

	$command = Yii::app()->db->createCommand($sql);		

	$dataReader = $command->queryAll();


        	$indpcod=16;    	

        	$indnom=16;

        	$indpum=16;

        	$indcan=16;

        	$indpmn=16;

        	$indpcuc=16; 

        	$inddes=16;      	

        	$indrec=16;      	

        	$impmn1=16;

        	$impmn2=16;

        	$impgeia=16;

        	$impcuc2=16;

        	$impcuc1=16;	

	

  


       	foreach($dataReader as $row){ 

       	$objPHPExcel->setActiveSheetIndex(0)

             	

         	

       	

        	->setCellValue('E'.$indnom, $row['NProductos'])

        	->setCellValue('AJ'.$indcan, $row['Cantidad'])

        	->setCellValue('A'.$indpcod, $row['Codprod']) // este es el campo objeto del tema

        	->setCellValue('AG'.$indpum, $row['UM'])

        	->setCellValue('AM'.$indpmn, $row['PrecioMN'])	

        	->setCellValue('AP'.$indpcuc, $row['PrecioCUC'])

        	->setCellValue('AU'.$impmn1, $row['1PMN'])

        	->setCellValue('AV'.$impmn2, $row['2PMN'])

        	->setCellValue('AW'.$impcuc2, $row['2PCUC'])

        	->setCellValue('AX'.$impgeia, $row['ImpGEIA']) 

        	->setCellValue('AY'.$indrec, $row['Recargo'])      	

        	->setCellValue('AZ'.$inddes, $row['Descuento'])

         	->setCellValue('F7', $row['CMNprov']) 

        	->setCellValue('F8', $row['afavormn'])

        	->setCellValue('F9', $row['afavorcuc'])

        	->setCellValue('AA7', $row['CCUCProv'])

        	->setCellValue('P5', $row['NITProv'])

        	->setCellValue('I6', $row['ReComProv'])

        	->setCellValue('AC6', $row['NRegMer'])		 

        	->setCellValue('AU5', $row['CodMon'])

        	->setCellValue('AV5', $row['CodOp'])

        	->setCellValue('D10', $row['NUEB'])

        	->setCellValue('AB10', $row['CUEB'])

        	->setCellValue('AN3', $row['NombreCliente'])

        	->setCellValue('AN9', $row['DireccionCliente']) 	

        	->setCellValue('AM5', $row['NITCliente'])

        	->setCellValue('AN4', $row['CodigoCliente'])

        	->setCellValue('AO10', $row['RegComCliente'])

        	->setCellValue('AO8', $row['CuentaCUPCliente'])

        	->setCellValue('AP7', $row['CuentaCUCCliente'])

        	->setCellValue('N13', $row['NoContratoCliente'])

        	->setCellValue('AT41', $row['CI'])

        	->setCellValue('AJ41', $row['NombreFirmante'])

        	->setCellValue('AP13', $row['VenceCon'])

        	->setCellValue('AN6', $row['RegMerCliente'])

        	->setCellValue('AS51', $row['Factura'])            	

        	->setCellValue('AL54', $row['PVenta']);


        	$indpcod++;    	

        	$indnom++;

        	$indpum++;

        	$indcan++;

        	$indpmn++;

        	$indpcuc++; 

        	$inddes++;      	

        	$indrec++;

        	$impmn1++;

        	$impmn2++;

        	$impgeia++;

        	$impcuc2++;	

        	$impcuc1++;	

			

         	}


	

  	header('Content-Type: application/vnd.ms-excel');

	header('Content-Disposition: attachment;filename="factura.xls"');

	header('Cache-Control: max-age=0');

 

	$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

	$objWriter->save('php://output');


}  



Puedes probar algo como:




->getCell('A'.$indpcod)->setValueExplicit($row['Codprod'], PHPExcel_Cell_DataType::TYPE_STRING);



Hola sucotronic gracias por responder, probe tu sugerencia pero al ejecutar me da el sig uiente Error:

Fatal error: Call to undefined method PHPExcel_Cell::setCellValue() in C:\xampp\htdocs\Bebidas\SoftVentas\protected\controllers\DatossalController.php on line 757

necesito ver como puedo resolver ese error

Hola,

No sé si te servirá, tenía un problema parecido y lo arregle así, introduciendo un pequeño css

excel y ceros por la izquierda

Espero que pueda servirte.