以下学习笔记均是从慕课网的视频里整理得来,仅作自己学习记录和交流之用,课程链接为 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:推荐使用第一种方法,第一种对内存消耗比较少,且代码可读性更强,而且可以设置单元格的样式
??
①读取数据并输出到本地文件保存
数据库结构
本人相关文件放置目录位置
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;?>
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答