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');
}