Пример #1
0
 function actionImport()
 {
     $userid = $this->userid;
     $MUser = $this->LoadApiModelMedical('user');
     $user = $MUser->getUser($userid);
     if ($user && $this->post('filexls')) {
         $time_before = CTool::getUTime();
         $filexls = $this->post('filexls');
         $xls = new CExcel();
         $uploadLoc = $this->getLoc('_data');
         $filexls = $uploadLoc . $filexls;
         $sheetArr = $xls->getData($filexls);
         // print_r($sheetArr);exit;
         // exit;
         /*
         excel中的数据分为三段:
             1, 基本信息
             2, 规格信息
             3, 详细信息
             其中2,3统统存放到detail中
         */
         if ($sheetArr) {
             foreach ($sheetArr as $sheet => $dataArr) {
                 // print_r($dataArr);exit;
                 if ($dataArr) {
                     //----------------------------------------------------
                     $fields = $dataArr[1];
                     //第1行为字段信息
                     // print_r($fields);exit;
                     $pos = array_search('-', array_values($fields));
                     //第一个'-'的位置
                     // print_r($fields);
                     $bases = $fields;
                     //基本信息(arr)
                     $specs = array_slice($fields, $pos + 1);
                     //规格信息(arr)
                     // $this->dump($fields);
                     //----------------------------------------------------
                     //----------------------------------------------------
                     $xvalArr = array_slice($dataArr, 1);
                     $valueArr = $partionArr = array();
                     $restype = $this->post('restype');
                     // print_r($dataArr);exit;
                     foreach ($xvalArr as $k => $xrow) {
                         if (empty($xrow['A']) && !isset($last_row)) {
                             break;
                         }
                         //数据有问题
                         $row = array();
                         // if(empty($xrow['A']))continue; //第一栏为空
                         $attnameArr = $attvalArr = array();
                         //属性名和属性值
                         foreach ($bases as $c => $field) {
                             //c为excel中的列名(A,B...)
                             //field为excel中的第一行的值(业务上的字段) 产品品牌
                             $field = trim($field);
                             $xval = trim($xrow[$c]);
                             $row['hospitalid'] = $user['hospitalid'];
                             if ('身份证号' == $field) {
                                 $row['idcard'] = trim($xval);
                             } elseif (false !== strpos($field, '手机号')) {
                                 $row['mobile'] = floatval($xval);
                             } elseif (false !== strpos($field, '姓名')) {
                                 $row['username'] = trim($xval);
                             } elseif (false !== strpos($field, '年龄')) {
                                 //针对机械
                                 $row['age'] = trim($xval);
                             } elseif (false !== strpos($field, '角色id')) {
                                 $row['role'] = intval($xval);
                             } elseif (false !== strpos($field, '所属医院')) {
                                 /*$title  = trim($xval);
                                   $MHospital = $this->LoadApiModelMedical('hospital');
                                   $hospital = $MHospital->getHospital(null,array('title'=>$title));
                                   if($hospital){
                                       $row['hospitalid'] = $hospital['id'];
                                   }*/
                             } elseif (false !== strpos($field, '科室')) {
                                 $row['deptname'] = trim($xval);
                             } elseif (false !== strpos($field, '民族ID')) {
                                 $row['ethnic'] = trim($xval);
                             } elseif (false !== strpos($field, '地址')) {
                                 $row['address'] = trim($xval);
                             } elseif (false !== strpos($field, '电话')) {
                                 $row['home_phone'] = trim($xval);
                             } elseif (false !== strpos($field, '住院号')) {
                                 $row['num_ill'] = trim($xval);
                             } elseif (false !== strpos($field, '入院日期')) {
                                 $row['date_in'] = trim($xval);
                             } elseif (false !== strpos($field, '出院日期')) {
                                 $row['date_out'] = trim($xval);
                             }
                         }
                         $valueArr[] = $row;
                     }
                     // print_r($valueArr);exit;
                     //----------------------------------------------------
                     // break; detail
                 }
                 break;
                 //只读一页
             }
         }
         //导入数据========================================
         // print_r($valueArr);
         $dataArr = array();
         $importinfos = array();
         if ($valueArr) {
             $MUser = $this->LoadApiModelMedical('user');
             foreach ($valueArr as $row) {
                 if (empty($row['hospitalid']) || empty($row['idcard']) || empty($row['username'])) {
                     $importinfos[] = array('code' => 1, 'message' => '数据不合法');
                     continue;
                 }
                 $retArr = $MUser->addUser($row);
                 $importinfos[] = array('code' => 1 == $retArr['status'] ? 0 : 1, 'message' => $retArr['message']);
             }
             // print_r($retArr);
             // print_r($valueArr);
             // @unlink($filexls);
         }
         $time_after = CTool::getUTime();
         $Elapse = sprintf("%.4f", $time_after - $time_before);
         $dataArr['elapsed'] = $Elapse;
         $dataArr['total'] = count($valueArr);
         $dataArr['importinfos'] = $importinfos;
         //end 导入数据====================================
         // $jArr['data'] = $valueArr;
         $this->response($dataArr);
     }
 }
Пример #2
0
<?php

set_time_limit(0);
include_once 'CExcel.php';
$excel = new CExcel(array('cache' => __DIR__ . DIRECTORY_SEPARATOR . 'cache', 'template' => __DIR__ . DIRECTORY_SEPARATOR . 'template' . DIRECTORY_SEPARATOR . 'default.data', 'column' => array('编号', '用户名', '昵称', '级别'), 'columnCenter' => true, 'row' => 6, 'param' => array(1 => array(1 => '影院:传奇时代影城', 4 => '制表日期:2015/9/9 17:09:11'), 2 => array(1 => '售票员销售报表'), 3 => array(1 => '操作日期: 从 2015/9/9 到 2015/9/9'), 4 => array(1 => '放映日期: 从 2015/9/10 到 2015/9/10')), 'merge' => array('2,1:3,1', '1,2:4,2', '1,3:4,3', '1,4:4,4', '1,5:4,5'), 'height' => 18, 'width' => 30));
$db = mysqli_connect('192.168.3.172', 'root', '123456', 'tms');
$query = mysqli_query($db, 'SELECT count(*) as RecordCount FROM tms_user');
$data = mysqli_fetch_all($query, MYSQLI_ASSOC);
$recordCount = $data[0]['RecordCount'];
$pageSize = 2000;
$pageCount = ceil($recordCount / $pageSize) + 1;
for ($page = 1, $identity = 0; $page < $pageCount; $page++) {
    $identity = ($page - 1) * $pageSize;
    $query = mysqli_query($db, "SELECT uid,username,nickname,level FROM tms_user LIMIT {$identity}, {$pageSize}");
    $excel->load(mysqli_fetch_all($query, MYSQLI_ASSOC), $page);
}
$excel->create();
$excel->download();