PHPExcel类是php一个excel表格处理插件了,跑分系统开发(T:I8O、2853、296O V黎灿)下面我来给大家介绍利用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>