PHP - Problema con setTitle en PHPExcel

 
Vista:
sin imagen de perfil

Problema con setTitle en PHPExcel

Publicado por cristian (8 intervenciones) el 18/03/2016 16:19:23
Junto con saludarles, tengo un problema con el setTitle del phpexcel me explico. Tengo un libro en excel con varias hojas y los nombres de las hojas se las agrego a través de un array. El problema es que al abrir la hoja en excel esta me muestra que el formato no corresponde pero si elimino la parte del setTitle si me muestra los datos pero por supuesto sin los nombres de hoja que quiero que aparezcan.

Adjunto un archivo con lo que muestra el archivo de excel.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
error_reporting(E_ALL);
include_once '../Classes/PHPExcel.php';
include("conexion.php");
$fecha1=date("Y-m-d",strtotime($_POST['FechaDesde']));
$fecha2=date("Y-m-d",strtotime($_POST['FechaHasta']));
$objXLS = new PHPExcel();
 
 
$can1=mysql_query("SELECT nombre_empleado FROM empleados where tipo_empleado='TECNICO'",$conexion);
$hoja=0;
while($dato1=mysql_fetch_array($can1, MYSQL_NUM))
{
$objSheet = $objXLS->createSheet();
$objSheet = $objXLS->setActiveSheetIndex($hoja);
$objXLS->getActiveSheet()->setTitle($dato1[0]); AQUI AGREGO EL NOMBRE A LA HOJA
$can=mysql_query("select numero_reporte,fecha_inicio,fecha_termino,direccion,sucursal,cerrado from reportes where numero in (select id from tecnicos where nombre_tecnico='".$dato1[0]."') and fecha_inicio between '".$fecha1."' and '".$fecha2."' order by fecha_inicio ASC",$conexion);
if(mysql_num_rows($can)>0)
{
$objSheet->setCellValue('A1', 'N°');
$objSheet->setCellValue('B1', 'Reporte');
$objSheet->setCellValue('C1', 'Fecha Inicio');
$objSheet->setCellValue('D1', 'Fecha Termino');
$objSheet->setCellValue('E1', 'Direccion');
$objSheet->setCellValue('F1', 'Sucursal');
$objSheet->setCellValue('G1', 'Cerrado');
$numero=1;
$numero1=1;
	while($dato=mysql_fetch_array($can)){
		$numero++;
		$objSheet->setCellValue('A'.$numero, $numero1);
		$objSheet->setCellValue('B'.$numero, $dato[0]);
		$fecha3=date("d-m-Y",strtotime($dato[1]));
		if ($fecha3=='31-12-1969'){$fecha3="";}
		$objSheet->setCellValue('C'.$numero, $fecha3);
		$fecha4=date("d-m-Y",strtotime($dato[2]));
		if ($fecha4=='31-12-1969'){$fecha4="";}
		$objSheet->setCellValue('D'.$numero, $fecha4);
		$objSheet->setCellValue('E'.$numero, $dato[3]);
		$objSheet->setCellValue('F'.$numero, $dato[4]);
		$objSheet->setCellValue('G'.$numero, $dato[5]);
		$numero1++;
	}
$objXLS->getActiveSheet()->getColumnDimension("A")->setAutoSize(true);
$objXLS->getActiveSheet()->getColumnDimension("B")->setAutoSize(true);
$objXLS->getActiveSheet()->getColumnDimension("C")->setAutoSize(true);
$objXLS->getActiveSheet()->getColumnDimension("D")->setAutoSize(true);
$objXLS->getActiveSheet()->getColumnDimension("E")->setAutoSize(true);
$objXLS->getActiveSheet()->getColumnDimension("F")->setAutoSize(true);
$objXLS->getActiveSheet()->getColumnDimension("G")->setAutoSize(true);
$objXLS->setActiveSheetIndex($hoja);
$styleArray = array(
  'borders' => array(
    'allborders' => array(
      'style' => PHPExcel_Style_Border::BORDER_MEDIUM
    )
  )
);
$styleArray1 = array(
  'borders' => array(
    'allborders' => array(
      'style' => PHPExcel_Style_Border::BORDER_THIN
    )
  )
);
$objXLS->getActiveSheet()->getStyle('A1:G1')->applyFromArray($styleArray);
$objXLS->getActiveSheet()->getStyle('A2:G'.$numero)->applyFromArray($styleArray1);
unset($styleArray);
$objXLS->getActiveSheet()->getStyle('A1:G1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objXLS->getActiveSheet()->getStyle('A2:G'.$numero)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objXLS->getActiveSheet()->getStyle('A2:G'.$numero)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
}
else{$objSheet->setCellValue('A1', 'No tiene reportes');}
$hoja++;
}
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="Listado Reportes.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objXLS, 'Excel5');
$objWriter->save('php://output');
header("Location:../Administrador/ReportesTecnico.php");
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Problema con setTitle en PHPExcel

Publicado por cristian (8 intervenciones) el 18/03/2016 17:01:44
Lo solucione en donde pongo el nombre a la hoja, al array lo deje dentro del utf8_encode.

Asi quedo.

$objXLS->getActiveSheet()->setTitle(utf8_encode($dato1[0]));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con setTitle en PHPExcel

Publicado por Borja (48 intervenciones) el 21/10/2021 07:53:31
Gracias Cristian, me ha servido de mucho tu solución!! Tenía el mismo problema que tú! Mil gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar