2016-03-03 127 views
1

I'm測試從PHPExcel庫example.The代碼33chartcreate-column.php例子是:PHPExcel旋轉柱形圖標籤

<?php 

/** Error reporting */ 
error_reporting(E_ALL); 
ini_set('display_errors', TRUE); 
ini_set('display_startup_errors', TRUE); 
date_default_timezone_set('Europe/London'); 

define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); 

date_default_timezone_set('Europe/London'); 

/** 
* PHPExcel 
* 
* Copyright (C) 2006 - 2014 PHPExcel 
* 
* This library is free software; you can redistribute it and/or 
* modify it under the terms of the GNU Lesser General Public 
* License as published by the Free Software Foundation; either 
* version 2.1 of the License, or (at your option) any later version. 
* 
* This library is distributed in the hope that it will be useful, 
* but WITHOUT ANY WARRANTY; without even the implied warranty of 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 
* Lesser General Public License for more details. 
* 
* You should have received a copy of the GNU Lesser General Public 
* License along with this library; if not, write to the Free Software 
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 
* 
* @category PHPExcel 
* @package PHPExcel 
* @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) 
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL 
* @version 1.8.0, 2014-03-02 
*/ 

/** PHPExcel */ 
require_once '../../../PHPExcel/Classes/PHPExcel.php'; 


$objPHPExcel = new PHPExcel(); 
$objWorksheet = $objPHPExcel->getActiveSheet(); 
$objWorksheet->fromArray(
    array(
      array('', 2010, 2011, 2012), 
      array('Q1', 12, 15,  21), 
      array('Q2', 56, 73,  86), 
      array('Q3', 52, 61,  69), 
      array('Q4', 30, 32,  0), 
    ) 
); 

// Set the Labels for each data series we want to plot 
//  Datatype 
//  Cell reference for data 
//  Format Code 
//  Number of datapoints in series 
//  Data values 
//  Data Marker 
$dataseriesLabels = array(
    new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 
    new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 
    new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 
); 
// Set the X-Axis Labels 
//  Datatype 
//  Cell reference for data 
//  Format Code 
//  Number of datapoints in series 
//  Data values 
//  Data Marker 
$xAxisTickValues = array(
    new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), 
); 
// Set the Data values for each data series we want to plot 
//  Datatype 
//  Cell reference for data 
//  Format Code 
//  Number of datapoints in series 
//  Data values 
//  Data Marker 
$dataSeriesValues = array(
    new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), 
    new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), 
    new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), 
); 

// Build the dataseries 
$series = new PHPExcel_Chart_DataSeries(
    PHPExcel_Chart_DataSeries::TYPE_BARCHART,  // plotType 
    PHPExcel_Chart_DataSeries::GROUPING_STANDARD, // plotGrouping 
    range(0, count($dataSeriesValues)-1),   // plotOrder 
    $dataseriesLabels,        // plotLabel 
    $xAxisTickValues,        // plotCategory 
    $dataSeriesValues        // plotValues 
); 
// Set additional dataseries parameters 
//  Make it a vertical column rather than a horizontal bar graph 
$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL); 

// Set the series in the plot area 
$plotarea = new PHPExcel_Chart_PlotArea(NULL, array($series)); 
// Set the chart legend 
$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); 

$title = new PHPExcel_Chart_Title('Test Column Chart'); 
$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); 


// Create the chart 
$chart = new PHPExcel_Chart(
    'chart1',  // name 
    $title,   // title 
    $legend,  // legend 
    $plotarea,  // plotArea 
    true,   // plotVisibleOnly 
    0,    // displayBlanksAs 
    NULL,   // xAxisLabel 
    $yAxisLabel  // yAxisLabel 
); 

// Set the position where the chart should appear in the worksheet 
$chart->setTopLeftPosition('A7'); 
$chart->setBottomRightPosition('H20'); 

// Add the chart to the worksheet 
$objWorksheet->addChart($chart); 


// Save Excel 2007 file 
echo date('H:i:s') , " Write to Excel2007 format" , EOL; 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->setIncludeCharts(TRUE); 
$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); 
echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; 


// Echo memory peak usage 
echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true)/1024/1024) , " MB" , EOL; 

// Echo done 
echo date('H:i:s') , " Done writing file" , EOL; 
echo 'File has been created in ' , getcwd() , EOL; 

原始輸出是:

enter image description here

我想要的:

enter image description here

有沒有什麼方法可以像第二張圖片一樣旋轉標籤?(我的意思是在生成.xslx文件之前,通過php文件中的代碼允許前面的代碼)。我正在使用PHPEXCEL版本1.8.0

回答

0

我發現PHPExcel庫會自動旋轉標籤。它取決於圖表的寬度,如果你減少圖表的寬度。標籤apear就像第二張照片。通過代碼,我不知道該怎麼做,但正如我所說,如果您減少圖表寬度,標籤將看起來像在第二張照片中。還取決於每個標籤的長度。