• PHPExcel+phalcon+yii批量导入


    网上好多资料,但运行起来,总是有问题,这次好保存下来。

    phalcon下:

    第一步:在index.php里面添加

        include __DIR__ . "/../app/extensions/phpexcel/PHPExcel.php";

    第二步:实例function

    /*
    * 批量导入用户
    */
    public function batchImportUsersAction()
    {


    $filePath = dirname(__FILE__).'/../data/users.xls';

    $PHPReader = new PHPExcel_Reader_Excel2007();

    if(!$PHPReader->canRead($filePath)){

    $PHPReader = new PHPExcel_Reader_Excel5();

    if(!$PHPReader->canRead($filePath)){

    echo 'no Excel';
    exit;
    }

    }else{
    echo 'can read';exit;
    }
    $PHPExcel = $PHPReader->load($filePath);
    // echo is_object($PHPExcel).'mmm';exit; //查看是否初始化成功
    $currentSheet = $PHPExcel->getSheet(0); //读取excel文件中的第一个工作表
    $allColumn = $currentSheet->getHighestColumn();//取得所有列
    $allRow = $currentSheet->getHighestRow();//取得一共有多少行

    // $choose_row = $allRow; //遍历所有行
    $choose_row = 205;
    for($currentRow = 177;$currentRow <= $choose_row;$currentRow++){ //遍历所有行或指定行,177是excel的行号
    for($currentColumn= 'A';$currentColumn<= $allColumn; $currentColumn++){ //从第A列开始输出
    $val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65,$currentRow)->getValue();/**ord()将字符转为十进制数*/
    // if($currentColumn == 'B'){
    // echo iconv('gb2312','utf-8', $val);// 转成utf-8格式
    // }
    // echo $val;
    echo $val;
    }
    echo '<br/>';

    //插入表
    // $use = new Users();
    // $use->employee_id = $currentSheet->getCellByColumnAndRow(ord('A') - 65,$currentRow)->getValue();
    // $use->user_name = $currentSheet->getCellByColumnAndRow(ord('B') - 65,$currentRow)->getValue();
    // $use->email = $currentSheet->getCellByColumnAndRow(ord('D') - 65,$currentRow)->getValue();
    // $use->password = 22;
    // $use->role = 1;
    // $use->depart_id = 1;
    // $use->status = 1;
    // $use->position = 1;
    // $use->update_time = time();
    // $use->record_time = time();
    //
    // if($use->save() == false){
    // echo $currentRow.'行出错';
    // }

    }

    }

    补充:yii下 开发,在command里用cron定时跑时,时常会出现问题,比如:

        include(PHPExcel_Shared_String.php): failed to open stream: No such file or directory in file /data1/www/local/jiaban/yii/framework/YiiBase.php at line 435

        #0 /data1/www/local/jiaban/yii/framework/YiiBase.php(435): autoload()
        #1 unknown(0): autoload()

      上面的报错,是典型的autoload 自动加载冲突。 因为在Yii中用spl_autoload_register(array('YiiBase','autoload')) 定义过一个,而phpexcel或者phpmailer里也定义了各自的autoload函数。

      这时,如果系统自动用yii的autoload去加载phpexcel或者phpmailer的类时,会出现类名的问题。比如phpexcel下 PHPExcel_Shared_String.class.php,是多拼接一个class的。

      最好的方法,入口脚本处,导入phpexcel和phpmailer 的入口文件。

      Yii 项目中  修改index.php

      Yii commands中,修改 protected/yiic.php

      phalcon 和 task中,修改 index.php

      然后:还要在配置文件里面导入哦,比如Yii command的配置文件,console.php中,要加入 import   'application.extensions.*',

    1、以专家为榜样,不必自己重新探索
    2、解构技能,找出实现80%效果的那20%
    3、不要一心二用
    4、练习练习再练习!然后获得即时反馈
    5、坚持,不要在低谷期放弃
  • 相关阅读:
    设计模式-可复用面向对象软件基础笔记
    C#--笔记
    win系统下nodejs安装及环境配置
    三步将Node应用部署到Heroku上 --转载
    Ubuntu 重启命令
    Ubuntu ssh免密登录
    Ubuntu Hadoop环境搭建(Hadoop2.6.5+jdk1.8.0_121)
    Ubuntu vim使用
    Scala学习——array与arraybuffer的区别(初)
    Scala学习——可变参数(初)
  • 原文地址:https://www.cnblogs.com/zhongyuan/p/3808509.html
Copyright © 2020-2023  润新知