php利用PHPExcel类导出导入Excel用法
发布:smiling 来源: PHP粉丝网 添加日期:2014-08-28 09:44:45 浏览: 评论:0
PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考,PHPExcel自己百度下载这里不介绍了.
导出Excel用法,代码如下:
- //设置环境变量(新增PHPExcel)
- set_include_path('.'. PATH_SEPARATOR . Yii::app()->basePath.'/lib/PHPExcel' . PATH_SEPARATOR .
- get_include_path());
- //注:在yii中,也可以直接Yii::import(“application.lib.PHPExcel.*”);
- //引入PHPExcel相关文件
- require_once "PHPExcel.php";
- require_once 'PHPExcel/IOFactory.php';
- require_once 'PHPExcel/Writer/Excel5.php';
- //把要导出的内容放到表格,新建
- $resultPHPExcel = new PHPExcel();
- //设置参数 设值
- $resultPHPExcel->getActiveSheet()->setCellValue('A1', '季度');
- $resultPHPExcel->getActiveSheet()->setCellValue('B1', '名称');
- $resultPHPExcel->getActiveSheet()->setCellValue('C1', '数量');
- $i = 2; //开源代码phpfensi.com
- foreach($data as $item){
- $resultPHPExcel->getActiveSheet()->setCellValue('A' . $i, $item['quarter']);
- $resultPHPExcel->getActiveSheet()->setCellValue('B' . $i, $item['name']);
- $resultPHPExcel->getActiveSheet()->setCellValue('C' . $i, $item['number']);
- $i ++;
- }
设置导出参数,代码如下:
- //设置导出文件名
- $outputFileName = 'total.xls';
- $xlsWriter = new PHPExcel_Writer_Excel5($resultPHPExcel);
- //ob_start(); ob_flush();
- header("Content-Type: application/force-download");
- header("Content-Type: application/octet-stream");
- header("Content-Type: application/download");
- header('Content-Disposition:inline;filename="'.$outputFileName.'"');
- header("Content-Transfer-Encoding: binary");
- header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
- header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
- header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
- header("Pragma: no-cache");
- $xlsWriter->save( "php://output" );
输出有错,默认$xlsWriter->save( "php://output" );可能因为缓存不够大,而显示不完整,所以做个中转,代码如下:
- $finalFileName = (Yii::app()->basePath.'/runtime/'.time().'.xls';
- $xlsWriter->save($finalFileName);
- echo file_get_contents($finalFileName);
- //file_get_contents() 函数把整个文件读入一个字符串中。和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。
导入Excel用法,代码如下:
- <?php
- if($_POST['leadExcel'] == "true")
- {
- $filename = $_FILES['inputExcel']['name'];
- $tmp_name = $_FILES['inputExcel']['tmp_name'];
- $msg = uploadFile($filename,$tmp_name);
- echo $msg;
- }
- //导入Excel文件
- function uploadFile($file,$filetempname)
- {
- //自己设置的上传文件存放路径
- $filePath = 'upFile/';
- $str = "";
- //下面的路径按照你PHPExcel的路径来修改
- require_once '../PHPExcel/PHPExcel.php';
- require_once '../PHPExcel/PHPExcel/IOFactory.php';
- require_once '../PHPExcel/PHPExcel/Reader/Excel5.php';
- //注意设置时区
- $time=date("y-m-d-H-i-s");//去当前上传的时间
- //获取上传文件的扩展名
- $extend=strrchr ($file,'.');
- //上传后的文件名
- $name=$time.$extend;
- $uploadfile=$filePath.$name;//上传后的文件名地址
- //move_uploaded_file() 函数将上传的文件移动到新位置。若成功,则返回 true,否则返回 false。
- $result=move_uploaded_file($filetempname,$uploadfile);//假如上传到当前目录下
- //echo $result;
- if($result) //如果上传文件成功,就执行导入excel操作
- {
- include "conn.php";
- $objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format
- $objPHPExcel = $objReader->load($uploadfile);
- $sheet = $objPHPExcel->getSheet(0);
- $highestRow = $sheet->getHighestRow(); //取得总行数
- $highestColumn = $sheet->getHighestColumn(); //取得总列数
- /* 第一种方法
- //循环读取excel文件,读取一条,插入一条
- for($j=1;$j<=$highestRow;$j++) //从第一行开始读取数据
- {
- for($k='A';$k<=$highestColumn;$k++) //从A列读取数据
- {
- //
- 这种方法简单,但有不妥,以'\'合并为数组,再分割\为字段值插入到数据库
- 实测在excel中,如果某单元格的值包含了\导入的数据会为空
- //
- $str .=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'\';//读取单元格
- }
- //echo $str; die();
- //explode:函数把字符串分割为数组。
- $strs = explode("\",$str);
- $sql = "INSERT INTO te(`1`, `2`, `3`, `4`, `5`) VALUES (
- '{$strs[0]}',
- '{$strs[1]}',
- '{$strs[2]}',
- '{$strs[3]}',
- '{$strs[4]}')";
- //die($sql);
- if(!mysql_query($sql))
- {
- return false;
- echo 'sql语句有误';
- }
- $str = "";
- }
- unlink($uploadfile); //删除上传的excel文件
- $msg = "导入成功!";
- */
- /* 第二种方法*/
- $objWorksheet = $objPHPExcel->getActiveSheet();
- $highestRow = $objWorksheet->getHighestRow();
- echo 'highestRow='.$highestRow;
- echo "<br>";
- $highestColumn = $objWorksheet->getHighestColumn();
- $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);//总列数
- echo 'highestColumnIndex='.$highestColumnIndex;
- echo "<br>";
- $headtitle=array();
- for ($row = 1;$row <= $highestRow;$row++)
- {
- $strs=array();
- //注意highestColumnIndex的列数索引从0开始
- for ($col = 0;$col < $highestColumnIndex;$col++)
- {
- $strs[$col] =$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
- }
- $sql = "INSERT INTO te(`1`, `2`, `3`, `4`, `5`) VALUES (
- '{$strs[0]}',
- '{$strs[1]}',
- '{$strs[2]}',
- '{$strs[3]}',
- '{$strs[4]}')";
- //die($sql);
- if(!mysql_query($sql))
- {
- return false;
- echo 'sql语句有误';
- }
- }
- }
- else
- {
- $msg = "导入失败!";
- }
- return $msg;
- }
- ?>
HTML网页代码,代码如下:
- <form action="upload.php" method="post" enctype="multipart/form-data">
- <input type="hidden" name="leadExcel" value="true">
- <table align="center" width="90%" border="0">
- <tr>
- <td>
- <input type="file" name="inputExcel"><input type="submit" value="导入数据">
- </td>
- </tr>
- </table>
- </form>
Tags: PHPExcel类 导出导入Excel用法
- 上一篇:PHP错误处理方法总结
- 下一篇:PHP利用apc实现上传进度条方法
相关文章
- ·PHP通过PHPExcel类导入导出excel(2014-06-25)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)