加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-02-14 13:38:07 所属栏目:PHP教程 来源:互联网
导读:PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考,PHPExcel自己百度下载这里不介绍了. 导出Excel用法,代码如下: //设置环境变量(新增PHPExcel) set_include_path(.
  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; //开源代码Cuoxin.com
  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用法,代码如下:
 
  <?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>
 

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读