나는 CodeIgniter를 나란히 PHPExcel 버전 1.8.0을 사용하고 내가 뭘하려고 클론이며, 3 개의 다른 장을 작성하고있다 : 나는 시트의 3 종류에 결과를 얻을PHPExcel 논리 순서 오류
public function generateReport($obra, $todosEnsayes, $pNombre) {
$this->load->library('PHPExcel/PHPExcel');
$objPHPexcel = new PHPExcel();
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPexcel = $objReader->load('application/plantillas_excel/reporte_grafico2.xlsx');
$objPHPexcel->getProperties()
->setCreator('New system' )
->setLastModifiedBy('NewSystem' )
->setTitle('NewSystem' )
->setSubject('NewSystem')
->setDescription('NewSystem')
->setKeywords("Excel Office 2007 openxml php" )
->setCategory("NewSystem" );
$hoja = 0;
$inicial = 18;
$arrayNumero = array();
$arrayValor = array();
$arrayNombre = array();
$arrayValor2 = array();
$arrayDesv = array();
$tramo = 'TRAMO: KM '.$obra->km_inicial.'+'.$obra->mt_inicial.' - '.$obra->km_final .'+'.$obra->mt_final;
foreach($todosEnsayes as $key=>$ensaye) {
if (($key % 20) == 0)
{
$newSheet = clone $objPHPexcel->getSheetByName("PLANTILLA1");
$newSheet->setTitle('GRAF SYC-LL');
$objPHPexcel->setActiveSheetIndex($hoja);
$objWorksheet = $objPHPexcel->getActiveSheet();
$objWorksheet
->setCellValue('A6', "Obra:".$obra->objeto)
->setCellValue('A7', "Tramo:".$tramo);
$objWorksheet
->setCellValue('A'.$inicial, $key)
->setCellValue('B'.$inicial, '35')
->setCellValue('C'.$inicial, 'SYC 2A CPA PRUEBA')
->setCellValue('D'.$inicial, '35')
->setCellValue('E'.$inicial, '1.72');
array_push($arrayNumero, $key);
array_push($arrayValor, '35');
array_push($arrayNombre, 'SYC 2A CPA PRUEBA');
array_push($arrayValor2, '35');
array_push($arrayDesv, '1.72');
$this->generarImagen($arrayNumero,$arrayValor,$arrayNombre,$arrayValor2,$arrayDesv);
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setWorksheet($objWorksheet);
$objDrawing->setName("name");
$objDrawing->setDescription("Description");
$objDrawing->setPath('imagefile.png');
$objDrawing->setCoordinates('I8');
$objDrawing->setOffsetX(1);
$objDrawing->setOffsetY(5);
$arrayNumero = array();
$arrayValor = array();
$arrayNombre = array();
$arrayValor2 = array();
$arrayDesv = array();
$objPHPexcel->addSheet($newSheet, $hoja);
$inicial = 18;
}
else
{
$newSheet = clone $objPHPexcel->getSheetByName("PLANTILLA1");
//$newSheet->setTitle('GRAF SYC-LL');
//$objPHPexcel->addSheet($newSheet, $hoja);
$objPHPexcel->setActiveSheetIndex($hoja);
$objWorksheet = $objPHPexcel->getActiveSheet();
$objWorksheet
->setCellValue('A6', "Obra:".$obra->objeto)
->setCellValue('A7', "Tramo:".$tramo);
$objWorksheet
->setCellValue('A'.$inicial, $key)
->setCellValue('B'.$inicial, '35')
->setCellValue('C'.$inicial, 'SYC 2A CPA PRUEBA')
->setCellValue('D'.$inicial, '35')
->setCellValue('E'.$inicial, '1.72');
array_push($arrayNumero, $key);
array_push($arrayValor, '35');
array_push($arrayNombre, 'SYC 2A CPA PRUEBA');
array_push($arrayValor2, '35');
array_push($arrayDesv, '1.72');
$inicial++;
}
}
$this->generarImagen($arrayNumero,$arrayValor,$arrayNombre,$arrayValor2,$arrayDesv);
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setWorksheet($objWorksheet);
$objDrawing->setName("name");
$objDrawing->setDescription("Description");
$objDrawing->setPath('imagefile.png');
$objDrawing->setCoordinates('I8');
$objDrawing->setOffsetX(1);
$objDrawing->setOffsetY(5);
$arrayNumero = array();
$arrayValor = array();
$arrayNombre = array();
$arrayValor2 = array();
$arrayDesv = array();
$hoja++;
foreach($todosEnsayes as $key=>$ensaye) { //SE RECORREN LOS ENSAYES
if (($key % 20) == 0)
{
$newSheet = clone $objPHPexcel->getSheetByName("PLANTILLA2");
$newSheet->setTitle('GRAF SYC-CBR');
$objPHPexcel->setActiveSheetIndex($hoja);
$objWorksheet = $objPHPexcel->getActiveSheet();
$objWorksheet
->setCellValue('A6', "Obra:".$obra->objeto)
->setCellValue('A7', "Tramo:".$tramo);
$objWorksheet
->setCellValue('A'.$inicial, $key)
->setCellValue('B'.$inicial, '40')
->setCellValue('C'.$inicial, 'SYC 2A CPA PRUEBA')
->setCellValue('D'.$inicial, '40')
->setCellValue('E'.$inicial, '1.50');
array_push($arrayNumero, $key);
array_push($arrayValor, '35');
array_push($arrayNombre, 'SYC 2A CPA PRUEBA');
array_push($arrayValor2, '35');
array_push($arrayDesv, '1.72');
$this->generarImagen($arrayNumero,$arrayValor,$arrayNombre,$arrayValor2,$arrayDesv);
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setWorksheet($objWorksheet);
$objDrawing->setName("name");
$objDrawing->setDescription("Description");
$objDrawing->setPath('imagefile.png');
$objDrawing->setCoordinates('I8');
$objDrawing->setOffsetX(1);
$objDrawing->setOffsetY(5);
$arrayNumero = array();
$arrayValor = array();
$arrayNombre = array();
$arrayValor2 = array();
$arrayDesv = array();
$objPHPexcel->addSheet($newSheet, $hoja);
$inicial = 18;
}
else
{
$newSheet = clone $objPHPexcel->getSheetByName("PLANTILLA2");
//$newSheet->setTitle('GRAF SYC-LL');
//$objPHPexcel->addSheet($newSheet, $hoja);
$objPHPexcel->setActiveSheetIndex($hoja);
$objWorksheet = $objPHPexcel->getActiveSheet();
$objWorksheet
->setCellValue('A6', "Obra:".$obra->objeto)
->setCellValue('A7', "Tramo:".$tramo);
$objWorksheet
->setCellValue('A'.$inicial, $key)
->setCellValue('B'.$inicial, '40')
->setCellValue('C'.$inicial, 'SYC 2A CPA PRUEBA')
->setCellValue('D'.$inicial, '40')
->setCellValue('E'.$inicial, '1.50');
array_push($arrayNumero, $key);
array_push($arrayValor, '35');
array_push($arrayNombre, 'SYC 2A CPA PRUEBA');
array_push($arrayValor2, '35');
array_push($arrayDesv, '1.72');
$inicial++;
}
}
$this->generarImagen($arrayNumero,$arrayValor,$arrayNombre,$arrayValor2,$arrayDesv);
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setWorksheet($objWorksheet);
$objDrawing->setName("name");
$objDrawing->setDescription("Description");
$objDrawing->setPath('imagefile.png');
$objDrawing->setCoordinates('I8');
$objDrawing->setOffsetX(1);
$objDrawing->setOffsetY(5);
$arrayNumero = array();
$arrayValor = array();
$arrayNombre = array();
$arrayValor2 = array();
$arrayDesv = array();
$hoja++;
foreach($todosEnsayes as $key=>$ensaye) { //SE RECORREN LOS ENSAYES
if (($key % 20) == 0)
{
$newSheet = clone $objPHPexcel->getSheetByName("PLANTILLA3");
$newSheet->setTitle('GRAF SYC-EXP');
$objPHPexcel->setActiveSheetIndex($hoja);
$objWorksheet = $objPHPexcel->getActiveSheet();
$objWorksheet
->setCellValue('A6', "Obra:".$obra->objeto)
->setCellValue('A7', "Tramo:".$tramo);
$objWorksheet
->setCellValue('A'.$inicial, $key)
->setCellValue('B'.$inicial, '35')
->setCellValue('C'.$inicial, 'SYC 2A CPA PRUEBA')
->setCellValue('D'.$inicial, '35')
->setCellValue('E'.$inicial, '1.72');
$objPHPexcel->addSheet($newSheet, $hoja);
array_push($arrayNumero, $key);
array_push($arrayValor, '35');
array_push($arrayNombre, 'SYC 2A CPA PRUEBA');
array_push($arrayValor2, '35');
array_push($arrayDesv, '1.72');
$this->generarImagen($arrayNumero,$arrayValor,$arrayNombre,$arrayValor2,$arrayDesv);
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setWorksheet($objWorksheet);
$objDrawing->setName("name");
$objDrawing->setDescription("Description");
$objDrawing->setPath('imagefile.png');
$objDrawing->setCoordinates('I8');
$objDrawing->setOffsetX(1);
$objDrawing->setOffsetY(5);
$arrayNumero = array();
$arrayValor = array();
$arrayNombre = array();
$arrayValor2 = array();
$arrayDesv = array();
$inicial = 18;
}
else
{
$newSheet = clone $objPHPexcel->getSheetByName("PLANTILLA3");
//$newSheet->setTitle('GRAF SYC-LL');
//$objPHPexcel->addSheet($newSheet, $hoja);
$objPHPexcel->setActiveSheetIndex($hoja);
$objWorksheet = $objPHPexcel->getActiveSheet();
$objWorksheet
->setCellValue('A6', "Obra:".$obra->objeto)
->setCellValue('A7', "Tramo:".$tramo);
$objWorksheet
->setCellValue('A'.$inicial, $key)
->setCellValue('B'.$inicial, '35')
->setCellValue('C'.$inicial, 'SYC 2A CPA PRUEBA')
->setCellValue('D'.$inicial, '35')
->setCellValue('E'.$inicial, '1.72');
array_push($arrayNumero, $key);
array_push($arrayValor, '35');
array_push($arrayNombre, 'SYC 2A CPA PRUEBA');
array_push($arrayValor2, '35');
array_push($arrayDesv, '1.72');
$inicial++;
}
}
$this->generarImagen($arrayNumero,$arrayValor,$arrayNombre,$arrayValor2,$arrayDesv);
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setWorksheet($objWorksheet);
$objDrawing->setName("name");
$objDrawing->setDescription("Description");
$objDrawing->setPath('imagefile.png');
$objDrawing->setCoordinates('I8');
$objDrawing->setOffsetX(1);
$objDrawing->setOffsetY(5);
$arrayNumero = array();
$arrayValor = array();
$arrayNombre = array();
$arrayValor2 = array();
$arrayDesv = array();
//$objPHPexcel->removeSheetByIndex(0); /* SE ELIMINA LA PLANTILLA */
//$objPHPexcel->setActiveSheetIndex(0);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPexcel, 'Excel5');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Reporte.xls"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
}
을 나는 나의 Excel 파일에있다. 이 코드 조각의 문제점은 문서의 일부 부분에서 "0"을 표시한다는 것입니다. 특히 세 번째 foreach를 제외하고 다른 foreach 반복의 값을 가진 셀 11에서는 모든 올바른 값을 갖습니다.
각각의 foreach 제가 그것이 아직 코드에 도달하지 않은 경우 상기 제의 foreach 번째의 foreach 값을 혼합하는 것이 이상한 찾을 수 있도록 시트의 일 개 형태를 채운다.
EDIT : Ive가 시퀀스를 다시 만들었고 코드가 첫 번째 "foreach"를 입력하고 처음 "if"절을 입력하고 인쇄 할 때 처음에는 문제가 발견 된 것 같습니다. 심지어 ($ 키)의 첫 번째 값 상점 값이 0 :
if (($key % 20) == 0)
{
}
때 그것이 항상 입력 한 원인 나는 카운터에이 방법을 대체 한
아니었다 것으로 보인다 주사위가 없다. 나는 같은 결과를 가지고있다. 각각의 "foreach"에 대해 새로운 var로 시도하고 처음부터 (전역으로) 선언합니다. – Carlos