public function actionDump() { Yii::import('ext.yiiexcel.YiiExcel', true); Yii::registerAutoloader(array('YiiExcel', 'autoload'), true); $root = dirname(dirname(dirname(__FILE__))); $ts = (int) (time() / 100); $filePath = $root . "/download/{$ts}.xlsx"; if (file_exists($filePath)) { header("Location: /download/{$ts}.xlsx"); echo "Cache: hit"; exit; } $model = new Jmuser('search'); $model->unsetAttributes(); // clear any default values $model->attributes = array(); $data = $model->search(); $data->setPagination(false); $objPHPExcel = new PHPExcel(); $row = 1; $base = 0; $labels = $model->attributeLabels(); foreach (Jmuser::dumpFields() as $col => $field) { $name = isset($labels[$field]) ? $labels[$field] : $field; $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $name); $base += 1; } $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($base, $row, "出生日期"); $base += 1; foreach (Jmuser::extraFields() as $col => $field) { $name = isset($labels[$field]) ? $labels[$field] : $field; $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($base, $row, $name); $base += 1; } foreach (Jmuser::paperFields() as $col => $field) { $name = isset($labels[$field]) ? $labels[$field] : $field; $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($base, $row, $name); $base += 1; } //var_dump($cnt, $data->getItemCount(), $data->getTotalItemCount()); $users = $data->getData(array("order" => "sysID")); foreach ($users as $key => $user) { // echo "{$row}/" . count($users) . " " . $user->oa . "\n"; $row += 1; $base = 0; foreach (Jmuser::dumpFields() as $col => $field) { $val = $user->{$field}; $cell = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($col, $row); $cell->setValueExplicit($val, PHPExcel_Cell_DataType::TYPE_STRING); $base += 1; } $cell = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($base, $row); $cell->setValueExplicit(substr($user->idcard, 6, 8)); $base += 1; $extra = json_decode($user->extra, true); foreach (Jmuser::extraFields() as $col => $field) { $cell = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($base, $row); $cell->setValueExplicit($extra[$field], PHPExcel_Cell_DataType::TYPE_STRING); $base += 1; } $paper = json_decode($user->paper, true); foreach (Jmuser::paperFields() as $col => $field) { $cell = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($base, $row); if (isset($paper[$field])) { $cell->setValueExplicit($paper[$field], PHPExcel_Cell_DataType::TYPE_STRING); } $base += 1; } } $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); $objWriter->save($filePath); header("Location: /download/{$ts}.xlsx"); }
public function actionP4() { $id = strtoupper(Yii::app()->getUser()->getName()); $model = Jmuser::model()->findByPk($id); if (!$model) { $this->redirect('?r=site'); return; } $errorMessage = ""; $routeCount = Jmroute::getRouteCount($model->wave); $extra = json_decode($model->extra, true); if (isset($_POST['LoginForm'])) { $extra = $_POST['Extra']; $form = $_POST['LoginForm']; $translate = $model->attributeLabels(); foreach ($form as $k => $v) { $model->{$k} = $v; if (empty($v)) { $fieldName = isset($translate[$k]) ? $translate[$k] : $k; $errorMessage = "所有信息均为必填,缺少信息: " . $fieldName; } } foreach (Jmuser::extraFields() as $idx => $f) { if (empty($extra[$f])) { $fieldName = isset($translate[$f]) ? $translate[$f] : $f; $errorMessage = "所有信息均为必填,缺少信息: {$fieldName}"; } } $model->extra = json_encode($extra); if (empty($errorMessage)) { $luxian = $extra['luxian']; if ($routeCount[$luxian] <= 0) { $errorMessage = "路线选择失败"; } else { if ($model->save()) { Jmroute::setRoute($model->wave, $id, $extra['luxian']); $this->redirect('?r=site/p5'); return; } $errorMessage = "保存失败 :("; } } } $model->extra = $extra; $this->renderPartial('p4', array('user' => $model, 'error' => $errorMessage, 'route' => $routeCount)); }