PHPExcel 导出表格 不知道好不好用
Posted 神靖希希
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHPExcel 导出表格 不知道好不好用相关的知识,希望对你有一定的参考价值。
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; 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用法
<? 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>
以上是关于PHPExcel 导出表格 不知道好不好用的主要内容,如果未能解决你的问题,请参考以下文章
phpexcel导入excel表格,导入后自动为科学计数法5.1115E+14