zoukankan      html  css  js  c++  java
  • php利用PHPExcel类导出导入Excel用法

    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'; 

    //把要导出的内容放到表格

     1 //新建 
     2 
     3 $resultPHPExcel = new PHPExcel(); 
     4 //设置参数 
     5 
     6 //设值 
     7 
     8 $resultPHPExcel->getActiveSheet()->setCellValue('A1', '季度'); 
     9 $resultPHPExcel->getActiveSheet()->setCellValue('B1', '名称'); 
    10 $resultPHPExcel->getActiveSheet()->setCellValue('C1', '数量'); 
    11 $i = 2; 
    12 foreach($data as $item){ 
    13 $resultPHPExcel->getActiveSheet()->setCellValue('A' . $i, $item['quarter']); 
    14 $resultPHPExcel->getActiveSheet()->setCellValue('B' . $i, $item['name']); 
    15 $resultPHPExcel->getActiveSheet()->setCellValue('C' . $i, $item['number']); 
    16 $i ++; 
    17 }

    //设置导出参数

     1 //设置导出文件名 
     2 
     3 $outputFileName = 'total.xls'; 
     4 
     5 $xlsWriter = new PHPExcel_Writer_Excel5($resultPHPExcel); 
     6 
     7 //ob_start(); ob_flush(); 
     8 
     9 header("Content-Type: application/force-download"); 
    10 
    11 header("Content-Type: application/octet-stream"); 
    12 
    13 header("Content-Type: application/download"); 
    14 
    15 header('Content-Disposition:inline;filename="'.$outputFileName.'"'); 
    16 
    17 header("Content-Transfer-Encoding: binary"); 
    18 
    19 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
    20 
    21 header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
    22 
    23 header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    24 
    25 header("Pragma: no-cache"); 
    26 
    27 $xlsWriter->save( "php://output" );

    输出有错。 

    默认$xlsWriter->save( "php://output" );可能因为缓存不够大,而显示不完整,所以做个中转,方式如下: 

    1 $finalFileName = (Yii::app()->basePath.'/runtime/'.time().'.xls'; 
    2 
    3 $xlsWriter->save($finalFileName); 
    4 
    5 echo file_get_contents($finalFileName); 

    //file_get_contents() 函数把整个文件读入一个字符串中。和 file() 一样,不同的是 file_get_contents() 把文

    件读入一个字符串。 

    导入Excel用法

      1 <?
      2 if($_POST['leadExcel'] == "true")
      3 {
      4     $filename = $_FILES['inputExcel']['name'];
      5     $tmp_name = $_FILES['inputExcel']['tmp_name'];
      6     $msg = uploadFile($filename,$tmp_name);
      7     echo $msg;
      8 }
      9 
     10 //导入Excel文件
     11 function uploadFile($file,$filetempname) 
     12 {
     13     //自己设置的上传文件存放路径
     14     $filePath = 'upFile/';
     15     $str = "";   
     16     //下面的路径按照你PHPExcel的路径来修改
     17     require_once '../PHPExcel/PHPExcel.php';
     18     require_once '../PHPExcel/PHPExcel/IOFactory.php';
     19     require_once '../PHPExcel/PHPExcel/Reader/Excel5.php';
     20 
     21     //注意设置时区
     22     $time=date("y-m-d-H-i-s");//去当前上传的时间 
     23     //获取上传文件的扩展名
     24     $extend=strrchr ($file,'.');
     25     //上传后的文件名
     26     $name=$time.$extend;
     27     $uploadfile=$filePath.$name;//上传后的文件名地址 
     28     //move_uploaded_file() 函数将上传的文件移动到新位置。若成功,则返回 true,否则返回 false。
     29     $result=move_uploaded_file($filetempname,$uploadfile);//假如上传到当前目录下
     30     //echo $result;
     31     if($result) //如果上传文件成功,就执行导入excel操作
     32     {
     33         include "conn.php";
     34         $objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format 
     35         $objPHPExcel = $objReader->load($uploadfile); 
     36         $sheet = $objPHPExcel->getSheet(0); 
     37         $highestRow = $sheet->getHighestRow();           //取得总行数 
     38         $highestColumn = $sheet->getHighestColumn(); //取得总列数
     39         
     40         /* 第一种方法
     41 
     42         //循环读取excel文件,读取一条,插入一条
     43         for($j=1;$j<=$highestRow;$j++)                        //从第一行开始读取数据
     44         { 
     45             for($k='A';$k<=$highestColumn;$k++)            //从A列读取数据
     46             { 
     47                 //
     48                 这种方法简单,但有不妥,以''合并为数组,再分割为字段值插入到数据库
     49                 实测在excel中,如果某单元格的值包含了导入的数据会为空        
     50                 //
     51                 $str .=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'';//读取单元格
     52             } 
     53             //echo $str; die();
     54             //explode:函数把字符串分割为数组。
     55             $strs = explode("",$str);
     56             $sql = "INSERT INTO te(`1`, `2`, `3`, `4`, `5`) VALUES (
     57             '{$strs[0]}',
     58             '{$strs[1]}',
     59             '{$strs[2]}',
     60             '{$strs[3]}',
     61             '{$strs[4]}')";
     62             //die($sql);
     63             if(!mysql_query($sql))
     64             {
     65                 return false;
     66                 echo 'sql语句有误';
     67             }
     68             $str = "";
     69         }  
     70         unlink($uploadfile); //删除上传的excel文件
     71         $msg = "导入成功!";
     72         */
     73 
     74         /* 第二种方法*/
     75         $objWorksheet = $objPHPExcel->getActiveSheet();
     76         $highestRow = $objWorksheet->getHighestRow(); 
     77         echo 'highestRow='.$highestRow;
     78         echo "<br>";
     79         $highestColumn = $objWorksheet->getHighestColumn();
     80         $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);//总列数
     81         echo 'highestColumnIndex='.$highestColumnIndex;
     82         echo "<br>";
     83         $headtitle=array(); 
     84         for ($row = 1;$row <= $highestRow;$row++) 
     85         {
     86             $strs=array();
     87             //注意highestColumnIndex的列数索引从0开始
     88             for ($col = 0;$col < $highestColumnIndex;$col++)
     89             {
     90                 $strs[$col] =$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
     91             }    
     92             $sql = "INSERT INTO te(`1`, `2`, `3`, `4`, `5`) VALUES (
     93             '{$strs[0]}',
     94             '{$strs[1]}',
     95             '{$strs[2]}',
     96             '{$strs[3]}',
     97             '{$strs[4]}')";
     98             //die($sql);
     99             if(!mysql_query($sql))
    100             {
    101                 return false;
    102                 echo 'sql语句有误';
    103             }
    104         }
    105     }
    106     else
    107     {
    108        $msg = "导入失败!";
    109     } 
    110     return $msg;
    111 }
    112 ?>

    HTML网页代码

     1 <form action="upload.php" method="post" enctype="multipart/form-data">
     2     <input type="hidden" name="leadExcel" value="true">
     3     <table align="center" width="90%" border="0">
     4     <tr>
     5        <td>
     6         <input type="file" name="inputExcel"><input type="submit" value="导入数据">
     7        </td>
     8     </tr>
     9     </table>
    10 </form>


     

  • 相关阅读:
    再谈Linux内核中的RCU机制
    Linux下的crontab定时执行任务命令详解
    Linux 2.6内核中新的锁机制--RCU
    linux内核自锁旋spinlock常用宏解释
    Linux内核list/hlist解读
    Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度(五)
    Linux下的进程类别(内核线程、轻量级进程和用户进程)以及其创建方式--Linux进程的管理与调度(四)
    Linux进程ID号--Linux进程的管理与调度(三)
    内核源码阅读(三)进程命名空间和用户命名的实现
    Linux的命名空间详解--Linux进程的管理与调度(二)
  • 原文地址:https://www.cnblogs.com/Darlin356230410/p/4532446.html
Copyright © 2011-2022 走看看