zoukankan      html  css  js  c++  java
  • phpexcel 使用

    ★安装

    1.安装composer 

      安装方法: http://docs.phpcomposer.com/00-intro.html#Installation-Windows

      cmd  =》 composer -v  检查是否安装成功

    2.cmd =》切换到项目目录,执行composer require phpoffice/phpexcel。之后等待安装完成,会自动在vendor目录生成文件

    ★应用

    1.导出 

    <a href="{:url('***/***/out')}" class="btn btn-primary">导出</a>

    private function getExcel($fileName,$headArr,$data){
      //对数据进行检验
      if(empty($data) || !is_array($data)){
        die("data must be a array");
      }
      //检查文件名
      if(empty($fileName)){
        exit;
      }

      $date = date("Y_m_d",time());
      $fileName .= "_{$date}.xlsx";
      $objPHPExcel = new PHPExcel();
      $objProps = $objPHPExcel->getProperties();

      foreach($headArr as $k=>$v){
        if($k<26){
          $colum[$k]=chr(65+$k);
          $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum[$k].'1', $v);
        }else if($k<702){
          $colum[$k]=chr(64+($k/26)).chr(65+$k%26);
          $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum[$k].'1', $v);
        }
      }

      $column=2;
      $objActSheet = $objPHPExcel->getActiveSheet();
      foreach($data as $key => $rows){ //行写入
      $n = 0;
        foreach($rows as $keyName=>$value){// 列写入
          $j = $colum[$n];
          $objActSheet->setCellValueExplicit($j.$column,$value,PHPExcel_Cell_DataType::TYPE_STRING);
          $n++;
        }
        $column++;
      }
      $fileName = iconv("utf-8", "gb2312", $fileName);
      //重命名表
      // $objPHPExcel->getActiveSheet()->setTitle('test');
      //设置活动单指数到第一个表,所以Excel打开这是第一个表
      $objPHPExcel->setActiveSheetIndex(0);
      ob_end_clean(); //清空缓存
      header('Content-Type: application/vnd.ms-excel');
      header("Content-Disposition: attachment;filename="$fileName"");
      header('Cache-Control: max-age=0');
      $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
      //文件通过浏览器下载
      $objWriter->save('php://output');exit;
    }

    2.导入

      A.上传文件,这步略;

      B. 获取文件地址和名字,即是 $filename = "./1.xlsx";  

      C.执行 下面方法即可,$arr为从excel中获取到的数据

    private function excelToArray($fliepath,$table){
      $phpexce = new PHPExcel();
      $phpReader = new PHPExcel_Reader_Excel2007();
      if(!$phpReader->canRead($fliepath)){
        $phpReader = new PHPExcel_Reader_Excel5();
        if(!$phpReader->canRead($fliepath)){
          echo 'no excel';
          return;
        }
      }
      $phpexcel = $phpReader->load($fliepath);
      $currentSheet = $phpexcel->getSheet(0); //读取excel文件中的第一个工作表
      $allColumn = $currentSheet->getHighestColumn(); //取得最大的列号
      $allRow = $currentSheet->getHighestRow(); //取得一共有多少行  
      $erp_orders_id = array(); //声明数组
      $val=[];
      for($currentRow = 1;$currentRow <= $allRow;$currentRow++){
        /**从第A列开始输出*/
        for($currentColumn= 0;$currentColumn< (ord($allColumn)-64); $currentColumn++){
          if($currentColumn<26){
            $colum=chr(65+$currentColumn);
          }else if($currentColumn<702){
            $colum=chr(64+($currentColumn/26)).chr(65+$currentColumn%26);
          }
          $v = $currentSheet->getCell($colum.$currentRow)->getValue();/**ord()将字符转为十进制数*/
          $val[$table[$currentColumn]] = rtrim(ltrim((String)$v,'="'),'"');
          /**如果输出汉字有乱码,则需将输出内容用iconv函数进行编码转换,如下将gb2312编码转为utf-8编码输出*/
          //echo iconv('utf-8','gb2312', $val)." ";
        }
        if($val!=''){
          $erp_orders_id[$currentRow] = $val;
        }
      }
      return $erp_orders_id;
    }

    ★错误总结:

    1.ERR_INVALID_RESPONSE  这个是由于PHP版本过高导致的。在1.8.1版本中已经解决

    当前解决方法: 删除PHPExcel / Classes / PHPExcel / Calculation / Functions.php中 581行左右删除break即可.

    2. 可能导出的数据混乱

    这个可能是缓存导致的,清空就好 代码中添加:ob_end_clean();

  • 相关阅读:
    burpsuit学习--修改来源地址
    JPEG Exif 学习
    debug 和 release 版本间堆栈平衡的区别
    sscanf用法
    磁盘学习+MBR学习
    如何进行DLL调试
    Proj THUDBFuzz Paper Reading: Order Matters: Semantic Aware Neural Networks for Binary Code Similarity Detection
    Proj THUDBFuzz Paper Reading: VulSeeker-Pro: Enhanced Semantic Learning Based Binary Vulnerablity Seeker with Emulation
    Asynchronous Programming in Rust
    Proj THUDBFuzz Paper Reading: MemLock: Memory Usage Guided Fuzzing
  • 原文地址:https://www.cnblogs.com/walksnow/p/7132907.html
Copyright © 2011-2022 走看看