首页 > 编程 > PHP > 正文

PHPExcel学习笔记

2020-03-22 19:54:22
字体:
来源:转载
供稿:网友
  • 以下学习笔记均是从慕课网的视频里整理得来,仅作自己学习记录和交流之用,课程链接为 http://www.imooc.com/view/433

    学习PHPExcel准备工作

    php版本不能太低

    保持php版本5.3以上

    下载PHPExcel插件

    https://github.com/PHPOffice/PHPExcel/archive/1.8.1.zip

    解压后提取html' target='_blank'>classes文件夹到工作目录,并重命名为excel

    此处还用到了虚拟域名的设置,可以参考下篇博文:http://blog.csdn.net/panjican/article/details/51660751

    使用PHPExcel导出文件步骤

    方法一:

    <?php    header("Content-Type: text/html;charset=utf-8");    $dir = dirname(__FILE__);//找到当前脚本所在路径	require_once $dir."/PHPExcel.php"; //引入文件	$obj = new PHPExcel();// 实例化PHPExcel类,等价于在桌面上新建一个excel表格	$objSheet = $obj->getActiveSheet(); //获得当前活动sheet的操作对象	$objSheet->setTitle('demo'); //给当前活动sheet设置名称    //方法1	$objSheet->setCellValue("A1","姓名")->setCellValue("B1","分数"); //给当前活动sheet填充数据	$objSheet->setCellValue("A2","张三")->setCellValue("B2","50");	$objWriter = PHPExcel_IOFactory::createWriter($obj,"Excel2007"); //按照指定格式生成excel文件	$objWriter->save($dir."/demo.xlsx");  //保存文件?>

    方法二:

    <?php    header("Content-Type: text/html;charset=utf-8");    $dir = dirname(__FILE__);//找到当前脚本所在路径	require_once $dir."/PHPExcel.php"; //引入文件	$obj = new PHPExcel();// 实例化PHPExcel类,等价于在桌面上新建一个excel表格	$objSheet = $obj->getActiveSheet(); //获得当前活动sheet的操作对象	$objSheet->setTitle('demo'); //给当前活动sheet设置名称	//方法二	$array = array(		 		array(),				array("","姓名","分数"),				array("","李四","60"),				array("","王五","100")		      );	$objSheet->fromArray($array); //直接加载数据块来填充数据	$objWriter = PHPExcel_IOFactory::createWriter($obj,"Excel2007");	$objWriter->save($dir."/demo_1.xlsx");?>

    PS:推荐使用第一种方法,第一种对内存消耗比较少,且代码可读性更强,而且可以设置单元格的样式

    ??

    PHPExcel导出MySQL数据库数据

    ①读取数据并输出到本地文件保存

    数据库结构


    本人相关文件放置目录位置

    dbconfig.php

    <?php   	$phpexcel = array(   			'host' => "127.0.0.1",   			'username' => "root",   			'password' => "",   			'database' => "phpexcel",   			'charset'  => "utf8"   		);?>

    db.php

    <?php	require_once dirname(__FILE__)."/dbconfig.php"; //引入配置文件	class db {		public $conn = null;        //构造方法 实例化类时自动调用		public function __construct($config){			$this->conn = mysqli_connect($config['host'],$config['username'],$config['password'],$config['database']) or die(mysqli_connect_error()); //连接数据库			mysqli_query($this->conn, "set names ".$config['charset']) or die(mysqli_connect_error());//设定mysql编码		}		//根据传入sql语句 查询mysql结果集		public function getResult($sql){			$resource = mysqli_query($this->conn,$sql) or die(mysqli_connect_error());//查询sql语句			$res = array();			while($row = mysqli_fetch_assoc($resource)){				$res[] = $row;			}			return $res;		}		//根据传入年级数 查询每个年级的学生数据		public function getDataByGrade($grade){			$sql = "select username,score,class from user where grade=".$grade." order by score desc";			$res = self::getResult($sql);			return $res;		}	}?>

    export.php

    <?php	$dir = dirname(__FILE__); //查找当前脚本所在路径	require_once $dir."/db.php";//引入mysql操作类文件	require_once $dir."/PHPExcel.php";//引入PHPExcel文件	$db = new db($phpexcel); //实例化db类 连接数据库	$objPHPExcel = new PHPExcel(); //实例化PHPExcel类,等同于在桌面上新建一个excel	for( $i = 1; $i <= 3; $i++ ){		if($i > 1){			$objPHPExcel->createSheet();//创建新的内置表		}		$objPHPExcel->setActiveSheetIndex( $i - 1 ); //把新创建的sheet设定为当前活动sheet		$objSheet = $objPHPExcel->getActiveSheet(); //获取当前活动sheet        $objSheet->setTitle($i."年级"); //给当前活动sheet起个名字		$data = $db->getDataByGrade($i); //查询每个年级的学生数据		$objSheet->setCellValue("A1","姓名")->setCellValue("B1","分数")->setCellValue("C1","班级");//填充数据		$j = 2;		foreach($data as $key =>$value ){			$objSheet->setCellValue("A".$j,$value['username'])->setCellValue("B".$j,$value['score'])->setCellValue("C".$j,$value['class']."班");			$j++;		} }		$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5'); //生成excel文件		$objWriter->save($dir."/export_1.xls");//保存文件	?>

    浏览器输入链接地址,并打开

    生成的excel文件,打开如下:

    ②输出至浏览器

    export.php

    <?php	$dir = dirname(__FILE__); //查找当前脚本所在路径	require_once $dir."/db.php";//引入mysql操作类文件	require_once $dir."/PHPExcel.php";//引入PHPExcel文件	$db = new db($phpexcel); //实例化db类 连接数据库	$objPHPExcel = new PHPExcel(); //实例化PHPExcel类,等同于在桌面上新建一个excel	for( $i = 1; $i <= 3; $i++ ){		if($i > 1){			$objPHPExcel->createSheet();//创建新的内置表		}		$objPHPExcel->setActiveSheetIndex( $i - 1 ); //把新创建的sheet设定为当前活动sheet		$objSheet = $objPHPExcel->getActiveSheet(); //获取当前活动sheet		$objSheet->setTitle($i."年级");		$data = $db->getDataByGrade($i); //查询每个年级的学生数据		$objSheet->setCellValue("A1","姓名")->setCellValue("B1","分数")->setCellValue("C1","班级");//填充数据		$j = 2;		foreach($data as $key =>$value ){			$objSheet->setCellValue("A".$j,$value['username'])->setCellValue("B".$j,$value['score'])->setCellValue("C".$j,$value['class']."班");			$j++;		}	}		$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5'); //生成excel文件		//$objWriter->save($dir."/export_1.xls");//保存文件		browser_export('Excel5','browser_export03.xls'); //输出到浏览器		$objWriter->save("php://output");		function browser_export($type,$filename){			if( $type == "Excel5" ){				// Redirect output to a client’s web browser (Excel5) 告诉浏览器将要输出excel03文件                header('Content-Type: application/vnd.ms-excel');			}elseif( $type == "Excel2007E" ){				// Redirect output to a client’s web browser (Excel2007) 告诉浏览器将要输出excel07文件			    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');			}						 //告诉浏览器将输出文件的名称             header('Content-Disposition: attachment;filename="'.$filename.'"');             //禁止缓存             header('Cache-Control: max-age=0');              /*             // If you're serving to IE 9, then the following may be needed             header('Cache-Control: max-age=1');             */		}?>
    在浏览器输入链接,并打开,页面会弹框提示打开或者下载,打开文件,文件内容跟保存到本地的文件内容是一致的。



    PHPExcel导入文件


    reader.php

    <?php header("Content-Type:text/html;charset=utf-8");$dir=dirname(__FILE__);//找到当前脚本所在路径require $dir."/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文件里有多少个sheetfor($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编程

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表