1. 程式人生 > >php 圖表的操作

php 圖表的操作

office title 編寫 學生 填充 nec tin open cell

<?php 
	$dir=dirname(__FILE__);//查找當前腳本所在路徑
	require $dir."/db.php";//引入mysql操作類文件
	require $dir."/PHPExcel/PHPExcel.php";//引入PHPExcel
	$db=new db($phpexcel);//實例化db類 連接數據庫
	$objPHPExcel=new PHPExcel();//實例化PHPExcel類, 等同於在桌面上新建一個excel
	$objSheet=$objPHPExcel->getActiveSheet();//獲得當前活動sheet
	/**本節課程代碼編寫開始**/
	$array=array(
			array("","一班","二班","三班"),
			array("不及格",20,30,40),
			array("良好",30,50,55),
			array("優秀",15,17,20)
	);//準備數據
	$objSheet->fromArray($array);//直接加載數組填充進單元格內
	//開始圖表代碼編寫
	$labels=array(
		new PHPExcel_Chart_DataSeriesValues(‘String‘,‘Worksheet!$B$1‘,null,1),//一班
		new PHPExcel_Chart_DataSeriesValues(‘String‘,‘Worksheet!$C$1‘,null,1),//二班
		new PHPExcel_Chart_DataSeriesValues(‘String‘,‘Worksheet!$D$1‘,null,1),//三班
	);//先取得繪制圖表的標簽
	$xLabels=array(
		new PHPExcel_Chart_DataSeriesValues(‘String‘,‘Worksheet!$A$2:$A$4‘,null,3)//取得圖表X軸的刻度
	);
	$datas=array(
		new PHPExcel_Chart_DataSeriesValues(‘Number‘,‘Worksheet!$B$2:$B$4‘,null,3),//取一班的數據
		new PHPExcel_Chart_DataSeriesValues(‘Number‘,‘Worksheet!$C$2:$C$4‘,null,3),//取二班的數據
		new PHPExcel_Chart_DataSeriesValues(‘Number‘,‘Worksheet!$D$2:$D$4‘,null,3)//取三班的數據
	);//取得繪圖所需的數據

	$series=array(
		new PHPExcel_Chart_DataSeries(
			PHPExcel_Chart_DataSeries::TYPE_LINECHART,
			PHPExcel_Chart_DataSeries::GROUPING_STANDARD,
			range(0,count($labels)-1),
			$labels,
			$xLabels,
			$datas
		)
	);//根據取得的東西做出一個圖表的框架
	$layout=new PHPExcel_Chart_Layout();
	$layout->setShowVal(true);
	$areas=new PHPExcel_Chart_PlotArea($layout,$series);
	$legend=new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT,$layout,false);
	$title=new PHPExcel_Chart_Title("高一學生成績分布");
	$ytitle=new PHPExcel_Chart_Title("value(人數)");
	$chart=new PHPExcel_Chart(
		‘line_chart‘,
		$title,
		$legend,
		$areas,
		true,
		false,
		null,
		$ytitle
	);//生成一個圖標
	$chart->setTopLeftPosition("A7")->setBottomRightPosition("K25");//給定圖表所在表格中的位置

	$objSheet->addChart($chart);//將chart添加到表格中



	$objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,‘Excel2007‘);//生成excel文件
	$objWriter->setIncludeCharts(true);

	//$objWriter->save($dir."/export_1.xls");//保存文件
	browser_export(‘Excel2007‘,‘browser_chart.xlsx‘);//輸出到瀏覽器
	$objWriter->save("php://output");


	function browser_export($type,$filename){
		if($type=="Excel5"){
				header(‘Content-Type: application/vnd.ms-excel‘);//告訴瀏覽器將要輸出excel03文件
		}else{
				header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet‘);//告訴瀏覽器數據excel07文件
		}
		header(‘Content-Disposition: attachment;filename="‘.$filename.‘"‘);//告訴瀏覽器將輸出文件的名稱
		header(‘Cache-Control: max-age=0‘);//禁止緩存
	}
?>

  

<?php 
header("Content-Type:text/html;charset=utf-8");
$dir=dirname(__FILE__);//找到當前腳本所在路徑
require $dir."/PHPExcel/PHPExcel/IOFactory.php";//引入讀取excel的類文件
$filename=$dir."/export_1.xls";
$fileType=PHPExcel_IOFactory::identify($filename);//自動獲取文件的類型提供給phpexcel用
$objReader=PHPExcel_IOFactory::createReader($fileType);//獲取文件讀取操作對象
$sheetName=array("2年級","3年級");
$objReader->setLoadSheetsOnly($sheetName);//只加載指定的sheet
$objPHPExcel=$objReader->load($filename);//加載文件
/**$sheetCount=$objPHPExcel->getSheetCount();//獲取excel文件裏有多少個sheet
for($i=0;$i<$sheetCount;$i++){
	$data=$objPHPExcel->getSheet($i)->toArray();//讀取每個sheet裏的數據 全部放入到數組中
	print_r($data);
}**/
foreach($objPHPExcel->getWorksheetIterator() as $sheet){//循環取sheet
		foreach($sheet->getRowIterator() as $row){//逐行處理
				if($row->getRowIndex()<2){
					continue;
				}
				foreach($row->getCellIterator() as $cell){//逐列讀取
						$data=$cell->getValue();//獲取單元格數據
						echo $data." ";
				}
				echo ‘<br/>‘;
		}
		echo ‘<br/>‘;
}
exit;
?>

  

php 圖表的操作