首页 > php开发 > php利用PHPExcel类导出导入Excel用法

php利用PHPExcel类导出导入Excel用法

PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考,PHPExcel自己百度下载这里不介绍了.

导出Excel用法,代码如下:

<?php
//设置环境变量(新增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 ++;  
}
?>

设置导出参数,代码如下:

<?php
//设置导出文件名  
$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>


文章链接:http://www.phprm.com/develop/fs4903.html

随便收藏,请保留本文地址!

标签:phpexcel类 导出导入excel用法

相关文章

发表留言