
image
導(dǎo)出excel:
實(shí)例一:數(shù)據(jù)按年級(jí)分sheet顯示

image
<?php
$dir=dirname(__FILE__);
require $dir."/db.php";//引入mysql操作類文件
require $dir."/PHPExcel.php";//引入PHPExcel
$db=new db($phpexcel);//實(shí)例化db類 連接數(shù)據(jù)庫
$objPHPExcel=new PHPExcel();//實(shí)例化PHPExcel類, 等同于在桌面上新建一個(gè)excel
for($i=1;$i<=3;$i++){
if($i>1){
// 默認(rèn)已創(chuàng)sheet
$objPHPExcel->createSheet();//創(chuàng)建新的內(nèi)置表
}
$objPHPExcel->setActiveSheetIndex($i-1);//把新創(chuàng)建的sheet設(shè)定為當(dāng)前活動(dòng)sheet
$objSheet=$objPHPExcel->getActiveSheet();//獲取當(dāng)前活動(dòng)sheet
$objSheet->setTitle($i."年級(jí)");//給當(dāng)前活動(dòng)sheet起個(gè)名稱
$data=$db->getDataByGrade($i);//查詢每個(gè)年級(jí)的學(xué)生數(shù)據(jù)
$objSheet->setCellValue("A1","姓名")->setCellValue("B1","分?jǐn)?shù)")->setCellValue("C1","班級(jí)");//填充數(shù)據(jù)
$j=2;
foreach($data as $key=>$val){
$objSheet->setCellValue("A".$j,$val['username'])->setCellValue("B".$j,$val['score'])->setCellValue("C".$j,$val['class']."班");
$j++;
}
}
$objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');//生成excel文件
//$objWriter->save($dir."/export_1.xls");//保存文件
browser_export('Excel5','hjy.xls');//輸出到瀏覽器
$objWriter->save("php://output");
function browser_export($type,$filename){
if($type=="Excel5"){
header('Content-Type: application/v nd.ms-excel');//告訴瀏覽器將要輸出excel03文件
}else{
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告訴瀏覽器數(shù)據(jù)excel07文件
}
header('Content-Disposition: attachment;filename="'.$filename.'"');//告訴瀏覽器將輸出文件的名稱
header('Cache-Control: max-age=0');//禁止緩存
}
?>
實(shí)例二:數(shù)據(jù)同sheet顯示(樣式)

image
<?php
$dir=dirname(__FILE__);//查找當(dāng)前腳本所在路徑
require $dir."/db.php";//引入mysql操作類文件
require $dir."/PHPExcel.php";//引入PHPExcel
$db=new db($phpexcel);//實(shí)例化db類 連接數(shù)據(jù)庫
$objPHPExcel=new PHPExcel();//實(shí)例化PHPExcel類, 等同于在桌面上新建一個(gè)excel
$objSheet=$objPHPExcel->getActiveSheet();//獲得當(dāng)前活動(dòng)單元格
$objSheet->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER)->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//設(shè)置excel文件默認(rèn)水平垂直方向居中
$objSheet->getDefaultStyle()->getFont()->setSize(14)->setName("微軟雅黑");//設(shè)置默認(rèn)字體大小和格式
$objSheet->getStyle("A2:Z2")->getFont()->setSize(20)->setBold(true);//設(shè)置第二行字體大小和加粗
$objSheet->getStyle("A3:Z3")->getFont()->setSize(16)->setBold(true);//設(shè)置第三行字體大小和加粗
$objSheet->getDefaultRowDimension()->setRowHeight(30);//設(shè)置默認(rèn)行高
$objSheet->getRowDimension(2)->setRowHeight(50);//設(shè)置第二行行高
$objSheet->getRowDimension(3)->setRowHeight(40);//設(shè)置第三行行高
$gradeInfo=$db->getAllGrade();//查詢所有的年級(jí)
$index=0;
foreach($gradeInfo as $g_k=>$g_v){
$gradeIndex=getCells($index*2);//獲取年級(jí)信息所在列
$objSheet->setCellValue($gradeIndex."2","高".$g_v['grade']);
$classInfo=$db->getClassByGrade($g_v['grade']);//查詢每個(gè)年級(jí)所有的班級(jí)
foreach($classInfo as $c_k=>$c_v){
$nameIndex=getCells($index*2);//獲得每個(gè)班級(jí)學(xué)生姓名所在列位置
$scoreIndex=getCells($index*2+1);//獲得每個(gè)班級(jí)學(xué)生分?jǐn)?shù)所在列位置
$objSheet->mergeCells($nameIndex."3:".$scoreIndex."3");//合并每個(gè)班級(jí)的單元格
$objSheet->getStyle($nameIndex."3:".$scoreIndex."3")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('6fc144');//填充班級(jí)背景顏色
$classBorder=getBorderStyle("445cc1");//獲取班級(jí)邊框樣式代碼
$objSheet->getStyle($nameIndex."3:".$scoreIndex."3")->applyFromArray($classBorder);//設(shè)置每個(gè)班級(jí)的邊框
$info=$db->getDataByClassGrade($c_v['class'],$g_v['grade']);//查詢每個(gè)班級(jí)的學(xué)生信息
$objSheet->setCellValue($nameIndex."3",$c_v['class']."班");//填充班級(jí)信息
$objSheet->getStyle($nameIndex)->getAlignment()->setWrapText(true);//設(shè)置文字自動(dòng)換行
$objSheet->setCellValue($nameIndex."4","姓名\n換行")->setCellValue($scoreIndex."4","分?jǐn)?shù)");
$objSheet->getStyle($scoreIndex)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);//設(shè)置某列單元格格式為文本格式(長度超出顯示)
$j=5;
foreach($info as $key=>$val){
$objSheet->setCellValue($nameIndex.$j,$val['username'])->setCellValue($scoreIndex.$j,$val['score']);//填充學(xué)生信息
//$objSheet->setCellValue($nameIndex.$j,$val['username'])->setCellValueExplicit($scoreIndex.$j,$val['score']."12321321321321312",PHPExcel_Cell_DataType::TYPE_STRING);//填充學(xué)生信息
$j++;
}
$index++;
}
$endGradeIndex=getCells($index*2-1);//獲得每個(gè)年級(jí)的終止單元格
$objSheet->mergeCells($gradeIndex."2:".$endGradeIndex."2");//合并每個(gè)年級(jí)的單元格
$objSheet->getStyle($gradeIndex."2:".$endGradeIndex."2")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('c1b644');//填充年級(jí)背景顏色
$gradeBorder=getBorderStyle("c144b1");//獲取年級(jí)邊框樣式代碼
$objSheet->getStyle($gradeIndex."2:".$endGradeIndex."2")->applyFromArray($gradeBorder);//設(shè)置每個(gè)年級(jí)的邊框
}
$objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');//生成excel文件
//$objWriter->save($dir."/export_1.xls");//保存文件
browser_export('Excel5','browser_excel03.xls');//輸出到瀏覽器
$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');//告訴瀏覽器數(shù)據(jù)excel07文件
}
header('Content-Disposition: attachment;filename="'.$filename.'"');//告訴瀏覽器將輸出文件的名稱
header('Cache-Control: max-age=0');//禁止緩存
}
/**
**根據(jù)下標(biāo)獲得單元格所在列位置
**/
function getCells($index){
$arr=range('A','Z');
return $arr[$index];
}
/**
**獲取邊框樣式代碼
**/
function getBorderStyle($color){
$styleArray = array(
'borders' => array(
'outline' => array(
'style' => PHPExcel_Style_Border::BORDER_THICK,
'color' => array('rgb' => $color),
),
),
);
return $styleArray;
}
?>
實(shí)例三:顯示線狀excel

image
<?php
$dir=dirname(__FILE__);//查找當(dāng)前腳本所在路徑
require $dir."/db.php";//引入mysql操作類文件
require $dir."/PHPExcel.php";//引入PHPExcel
$db=new db($phpexcel);//實(shí)例化db類 連接數(shù)據(jù)庫
$objPHPExcel=new PHPExcel();//實(shí)例化PHPExcel類, 等同于在桌面上新建一個(gè)excel
$objSheet=$objPHPExcel->getActiveSheet();//獲得當(dāng)前活動(dòng)sheet
$array=array(
array("","一班","二班","三班"),
array("不及格",20,30,40),
array("良好",30,50,55),
array("優(yōu)秀",15,17,20)
);//準(zhǔn)備數(shù)據(jù)
$objSheet->fromArray($array);//直接加載數(shù)組填充進(jìn)單元格內(nèi)
//開始圖表代碼編寫
$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),//三班
);//先取得繪制圖表的標(biāo)簽
$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),//取一班的數(shù)據(jù)
new PHPExcel_Chart_DataSeriesValues('Number','Worksheet!$C$2:$C$4',null,3),//取二班的數(shù)據(jù)
new PHPExcel_Chart_DataSeriesValues('Number','Worksheet!$D$2:$D$4',null,3)//取三班的數(shù)據(jù)
);//取得繪圖所需的數(shù)據(jù)
$series=array(
new PHPExcel_Chart_DataSeries(
PHPExcel_Chart_DataSeries::TYPE_LINECHART,
PHPExcel_Chart_DataSeries::GROUPING_STANDARD,
range(0,count($labels)-1),
$labels,
$xLabels,
$datas
)
);//根據(jù)取得的東西做出一個(gè)圖表的框架
$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("高一學(xué)生成績分布");
$ytitle=new PHPExcel_Chart_Title("value(人數(shù))");
$chart=new PHPExcel_Chart(
'line_chart',
$title,
$legend,
$areas,
true,
false,
null,
$ytitle
);//生成一個(gè)圖表
$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');//告訴瀏覽器數(shù)據(jù)excel07文件
}
header('Content-Disposition: attachment;filename="'.$filename.'"');//告訴瀏覽器將輸出文件的名稱
header('Cache-Control: max-age=0');//禁止緩存
}
?>
導(dǎo)入excel
實(shí)例三:讀取execl數(shù)據(jù)
<?php
header("Content-Type:text/html;charset=utf-8");
$dir=dirname(__FILE__);//找到當(dāng)前腳本所在路徑
require $dir."/PHPExcel/PHPExcel/IOFactory.php";//引入讀取excel的類文件
$filename=$dir."/export_1.xls";
$fileType=PHPExcel_IOFactory::identify($filename);//自動(dòng)獲取文件的類型提供給phpexcel用
$objReader=PHPExcel_IOFactory::createReader($fileType);//獲取文件讀取操作對(duì)象
$sheetName=array("2年級(jí)","3年級(jí)");
$objReader->setLoadSheetsOnly($sheetName);//只加載指定的sheet
$objPHPExcel=$objReader->load($filename);//加載文件
/**$sheetCount=$objPHPExcel->getSheetCount();//獲取excel文件里有多少個(gè)sheet
for($i=0;$i<$sheetCount;$i++){
$data=$objPHPExcel->getSheet($i)->toArray();//讀取每個(gè)sheet里的數(shù)據(jù) 全部放入到數(shù)組中
print_r($data);
}**/
foreach($objPHPExcel->getWorksheetIterator() as $sheet){//循環(huán)取sheet
foreach($sheet->getRowIterator() as $row){//逐行處理
if($row->getRowIndex()<2){
continue;
}
foreach($row->getCellIterator() as $cell){//逐列讀取
$data=$cell->getValue();//獲取單元格數(shù)據(jù)
echo $data." ";
}
echo '<br/>';
}
echo '<br/>';
}
exit;
?>
數(shù)據(jù)量大時(shí)盡可能緩存

image

image