zoukankan      html  css  js  c++  java
  • 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;
    }
    ?>
    View Code

    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>
  • 相关阅读:
    学习之spring属性文件注入
    学习之spring自带缓存
    FreeMarker语法
    spring mvc 拦截器
    spring mvc 全局异常处理
    spring mvc 多视图配置
    学习之spring注解DI疑惑
    @Transactional详解
    mybatis关联查询
    shiro 实现 用户 a 操作b 的权限 ,用户 b 能够及时获知。b不需要退出登陆 。 关闭鉴权缓存,或者不配置缓存
  • 原文地址:https://www.cnblogs.com/sjxx/p/5562005.html
Copyright © 2011-2022 走看看