Hola a todos y muchas gracias por las respuestas que me puedan brindar.
El problema es que me esta ocurriendo un problema al exportar a excel, antes lo hacia bien, pero no se que ha ocurrido que no esta llenando las celdas del documento como debe ser, solo llena lo que debe estar en la celda AT56 (última celda de la plantilla preformateada) en la celda A21, lo demás lo deja en blanco, ya sustituí los ficheros de la extension phpexcel (clases) en mi \protected\extensions, pero sigue igual, aquí pongo lo que hice en mi controlador para que me sugieran que me esta pasando:
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("factur.xls");
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A21', $id);
$model=$this->loadModel($id);
$NFac = $model->nfactura;
$sql='SELECT
`proveedor`.`NIT` AS `NITProv`,
`proveedor`.`NRegCom` AS `ReComProv`,
`clientes`.`CodCliente` AS `CodigoCliente`,
`clientes`.`Descripcion` AS `NombreCliente`,
`datossal`.`CodUEB` AS `CUEB`,
`entidades`.`NEnt` AS `NUEB`,
CASE when `datossal`.`CodMon` = 1 then `entidades`.`CuentaMN` end AS CMNprov,
CASE when `datossal`.`CodMon` = 2 OR `datossal`.`CodMon` = 3 then `proveedor`.`CuentaCUC` end AS CCUCProv,
`clientes`.`Direccion` AS `DireccionCliente`,
`clientes`.`NIT` AS `NITCliente`,
`clientes`.`NRegCom` AS `RegComCliente`,
`clientes`.`NRegMer` AS `RegMerCliente`,
`clientes`.`CuentaCUP` AS `CuentaCUPCliente`,
`clientes`.`CuentaCUC` AS `CuentaCUCCliente`,
`firmantes`.`NoContrato` AS `NoContratoCliente`,
`firmantes`.`FFinCon` AS `VenceCon`,
`datossal`.`fecha`,
`datossal`.`nfactura` AS `Factura`,
`datossal`.`CI`,
`firmantes`.`NombreApellidos` AS `NombreFirmante`,
`productos`.`NProductos`,
ROUND(`productos`.`PrCUC`,4) AS `PrecioCUC`,
`detallesfact`.`Cantidad`,
`detallesfact`.`Codprod`,
`productos`.`UM`,
`puntoventas`.`Descripcion` AS PVenta,
CASE when `datossal`.`CodMon` = 1 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` = 1 AND clientes.UDCMy = 2 THEN (productos.DesMay)*( `detallesfact`.`Cantidad`) end DescMay,
CASE when `datossal`.`CodMon` = 1 AND clientes.UDCMi = 2 THEN (productos.DesMin)*( `detallesfact`.`Cantidad`) end AS DescMin,
CASE when clientes.UPMin= 2 THEN ROUND(productos.PrePob,4)
when (clientes.UPMay= 2 and clientes.AMon= 2) THEN ROUND((productos.PreEmp-productos.PrCUC),4)
when (clientes.UPMay= 2 and clientes.Ember= 2) THEN ROUND((productos.PreEmp-productos.PreEmp*clientes.pormar),4)
when (clientes.UPMay= 2 and clientes.AMon= 1) THEN ROUND(productos.PreEmp,4) else 0 end AS PrecioMN,
case when `datossal`.`CodMon` = 1 then (CASE when clientes.UPMin= 2 THEN ROUND(productos.PrePob,4)
when (clientes.UPMay= 2 and clientes.AMon= 2) THEN ROUND((productos.PreEmp-productos.PrCUC),4)
when (clientes.UPMay= 2 and clientes.Ember= 2) THEN ROUND((productos.PreEmp-productos.PreEmp*clientes.pormar),4)
when (clientes.UPMay= 2 and clientes.AMon= 1) THEN ROUND(productos.PreEmp,4) else 0 end)*( `detallesfact`.`Cantidad`)
end As ImporteMN,
case when `datossal`.`CodMon` = 2 then productos.PrCUC*( `detallesfact`.`Cantidad`) else 0 end as ImporteCUC,
ROUND(productos.PrePob-productos.DesMay-productos.DesMin-productos.PreEmp,4) AS Impuesto,
`productos`.`PreEmp`,
`productos`.`PrCUC`,
productos.PrePob AS PrecioMin
FROM
`clientes`,
`datossal`,
`entidades`,
`firmantes`,
`productos`,
`detallesfact`,
`tipoprod`,
`proveedor`,
`puntoventas`
WHERE
`clientes`.`CodCliente` = `datossal`.`CodCliente` AND
`datossal`.`CodUEB` = `entidades`.`CodUEB` AND
`detallesfact`.`Codprod` = `productos`.`Codprod` AND
`detallesfact`.`Id_sal` = `datossal`.`nfactura` AND
`tipoprod`.`Codtipo` = `productos`.`Codtipo` AND
`firmantes`.`CI` = `datossal`.`CI` AND
`datossal`.`CodPVen` = `puntoventas`.`CodPVen` AND
'.$NFac.' =`detallesfact`.`Id_sal`
ORDER BY
`CUEB`';
$command = Yii::app()->db->createCommand($sql);
$dataReader = $command->queryAll();
$indpcod=21;
$indnom=21;
$indpum=21;
$indcan=21;
$indpmn=21;
$indpcuc=21;
$inddesma=21;
$inddesmi=21;
$indrec=21;
foreach($dataReader as $row){
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A'.$indpcod, $row['Codprod'])
->setCellValue('E'.$indnom, $row['NProductos'])
->setCellValue('AJ'.$indcan, $row['Cantidad'])
->setCellValue('AG'.$indpum, $row['UM'])
->setCellValue('AM'.$indpmn, $row['PrecioMN'])
->setCellValue('AP'.$indpcuc, $row['PrecioCUC'])
->setCellValue('AV'.$inddesma, $row['DescMay'])
->setCellValue('AU'.$inddesmi, $row['DescMin'])
->setCellValue('AW'.$indrec, $row['Impuesto'])
->setCellValue('V5', $row['NITProv'])
->setCellValue('V6', $row['ReComProv'])
->setCellValue('J7', $row['CMNprov'])
->setCellValue('J8', $row['CCUCProv'])
->setCellValue('AL7', $row['afavormn'])
->setCellValue('AL8', $row['afavorcuc'])
->setCellValue('E9', $row['NUEB'])
->setCellValue('AM9', $row['CUEB'])
->setCellValue('E10', $row['NombreCliente'])
->setCellValue('E11', $row['DireccionCliente'])
->setCellValue('M12', $row['NITCliente'])
->setCellValue('AM10', $row['CodigoCliente'])
->setCellValue('M13', $row['RegComCliente'])
->setCellValue('I14', $row['CuentaCUPCliente'])
->setCellValue('AS14', $row['CuentaCUCCliente'])
->setCellValue('J17', $row['NoContratoCliente'])
->setCellValue('AN17', $row['VenceCon'])
->setCellValue('AS13', $row['RegMerCliente'])
->setCellValue('AT56', $row['Factura'])
->setCellValue('AG42', $row['NombreFirmante'])
->setCellValue('AG44', $row['CI'])
->setCellValue('AH56', $row['PVenta']);
$indnom++;
$indcan++;
$indpmn++;
$indpcuc++;
$indpcod++;
$indpum++;
$inddesma++;
$inddesmi++;
$indrec++;
}
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="factur.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
}
Aclaro que la consulta esta bien, o sea brinda toda la información que necesita el documento para ser llenado, ademas utilizo Excel 2010, pero tampoco lo hace en Excel 2007.