zoukankan      html  css  js  c++  java
  • TP3.2加载外部PHPexcel类,实现导入和导出

    TP3.2加载外部PHPexcel类,实现导入和导出

    导入:

    1、将下载好的PHPexcel文件放到libray/Org/Uti/文件夹下,将PHPEXCEL.PHP改为PHPEXCEL.class.php

    2、导入类文件

    代码:

    import("Org.Util.PHPExcel");
    import("Org.Util.PHPExcel.Reader.Excel5");

    3、配置

    代码:

    $objReader = PHPExcel_IOFactory::createReader('Excel5');//配置成2003版本,因为office版本可以向下兼容
    $objPHPExcel = $objReader->load($file,$encode='utf-8');//$file 为解读的excel文件

    4、解读表格

    代码:

    $sheet = $objPHPExcel->getSheet(0);
    $highestRow = $sheet->getHighestRow(); // 取得总行数
    $highestColumn = $sheet->getHighestColumn(); // 取得总列数

    5、填入数据库

    代码:

    for($j=2;$j<=$highestRow;$j++)
    {
    $a = $objPHPExcel->getActiveSheet()->getCell("D".$j)->getValue();//白天司机姓名列
    $b = $objPHPExcel->getActiveSheet()->getCell("B".$j)->getValue();//晚上司机姓名列
        if(!is_null($a)){
            $data['driver'] = $a;
           $res = M('carcount_user')->data($data)->add();
         }
    }

    if($res){
          $this->success('填入数据库表完成!');
    }

    导出:

    1、

    放在vendor文件夹下不用import导入,实例化即可,注意new 后要使用

    代码:

    vendor('PHPExcel');
    $objExcel = new PHPExcel();
    $objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel5');

    2、设置表头

    $objExcel->getActiveSheet()->setCellValue('A1','司机');

    3、填入数据

    $count = count($driver);//$driver 为数据库表取出的数据
    for ($i = 2; $i <= $count+1; $i++) {
      $objExcel->getActiveSheet()->setCellValue('A' . $i, $driver[$i-2]['driver']); 
    }

    4、输出

    $objExcel->setActiveSheetIndex(); 
    header('Content-Type: applicationnd.ms-excel'); 
    header('Content-Disposition: attachment;filename="test.xls"'); 
    header('Cache-Control: max-age=0'); 

    $objWriter->save('php://output'); 
    exit;

    总结:

    PHPEXCEL相比reader功能多,bug少,在和TP搭配时要讲文件放在vendor/(实例化即可)或者org/uti/(用import导入)下,导入时关键函数为:getActiveSheet(),getCell("D".$j),getValue(),导出时关键函数为getActiveSheet(),setCellValue('A1','司机')。

  • 相关阅读:
    关于机器人流量对抗的一点感想
    保卫"木叶",从火影剧情看网站攻防的演变
    自动化工具层级图
    对抗恶意机器人/自动化行为的新思路与方案
    C++ 数组、链表和二叉树的比较
    #ifndef和#define区别
    xavier上安装teamviewer
    Ubuntu16.04 下有关conda虚拟环境的一些使用方法
    vector中push_back和emplace_back的区别
    int、int16、int32、int64、float、float16、float32、float64
  • 原文地址:https://www.cnblogs.com/457248499-qq-com/p/7456864.html
Copyright © 2011-2022 走看看