2014-02-24 4 views
0

저는이 문제에 대해 오래 동안 고생했습니다. 나는 아직도 길을 이해할 수없는 것처럼 보입니다. 나는 PHPExcel의 piechart 예제를 얻을 수 없었다. 33 chartcreate-pie.php. 나는 모든 곳에서 수색했지만 좋은 답변을 찾을 수없는 것 같아서 직접 물어보기로했습니다. 주어진 예제에서, 나는 이것을 시도 ... Codeigniter를 사용하고 있으므로 라이브러리를로드하고있다 $this->load->library('excel'). 처음에는PHPExcel 원형 차트

$dataseriesLabel1 = array(
     new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), 
); 

$xAxisTickValues1 = array(
    new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), 
); 

$dataSeriesValues1 = array(
    new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), 
); 

$series1 = new PHPExcel_Chart_DataSeries(
    PHPExcel_Chart_DataSeries::TYPE_PIECHART, 
    PHPExcel_Chart_DataSeries::GROUPING_STANDARD, 
    range(0, count($dataSeriesValues1)-1), 
    $dataseriesLabels1, 
    $xAxisTickValues1, 
    $dataSeriesValues1 
); 

$layout1 = new PHPExcel_Chart_Layout(); 
$layout1->setShowVal(TRUE); 
$layout1->setShowPercent(TRUE); 

$plotarea1 = new PHPExcel_Chart_PlotArea($layout1, array($series1)); 
$legend1 = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); 
$title1 = new PHPExcel_Chart_Title('Test Pie Chart'); 

$chart1 = new PHPExcel_Chart(
    'chart1', 
    $title1, 
    $legend1, 
    $plotarea1, 
    true, 
    0, 
    NULL, 
    NULL 
); 

$chart1->setTopLeftPosition('A7'); 
$chart1->setBottomRightPosition('H20'); 

$this->excel->getActiveSheet()->addChart($chart1); 

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
header('Content_Disposition: attachment;filename="Report"'); 
header('Cache-Control: max-age=0'); 

$objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel2007'); 
$objWriter->setIncludeCharts(TRUE); 
$objWriter->save('php://output'); 

, 내가 어떤 출력을받지 한 후 나는 Excel5를 사용하는 것을 발견했다. 그래서 유형을 Excel2007으로 바 꾸었습니다.하지만 아직 아무것도 얻지 못했습니다. 사실, 나는 내 보낸 .XLS.XLSX에서 확장자를 변경 할 때, 나는 다음과 같은 오류가 발생합니다 : <b>Fatal error</b>: Call to a member function cellExists() on a non-object in <b>path\application\third_party\PHPExcel\Calculation.php</b> on line <b>3327</b><br /> 내가 도움을 정말 감사하겠습니다. 이것 좀 봐 줘서 고마워. 나는 모든 것이 분명하기를 바란다.

답변

1

대신에이 작품 : $this->excel
사용 :                     $objPHPExcel (그러나 첫째 $objPHPExcel = new PHPExcel();)

대신 : header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
사용 :                     header('Content-Type: application/vnd.ms-excel');

대신 : header('Content_Disposition: attachment;filename="Report"'); 사용 :                         header('Content-Disposition: attachment;filename="Report.xls"');

+0

백틱 (\')으로 코드 블록을 래핑하는 것이 코드를 명확하게 만듭니다. – urban