Esempio n. 1
0
 /**
  * postDispatch
  * 
  * @return void
  */
 public function postDispatch()
 {
     if (array_key_exists($act = strtolower($this->getRequest()->getActionName()), static::$_limitedActions)) {
         // 导出CSV格式报表
         if (($ext = strtolower($this->input('ct'))) === 'csv') {
             // 数据格式以Windows下使用为准
             // 参考 http://msdn.microsoft.com/zh-cn/library/ms155919%28v=SQL.100%29.aspx
             $data = $this->view->render("master/stat/{$act}.{$ext}");
             $data = str_replace("\n", "\r\n", preg_replace('/\\s*\\n{2,}\\s*/', "\n", str_replace("\r", "\n", $data)));
             $data = preg_replace('/(\\s*,)\\s*\\r\\n\\s*/', '\\1', $data);
             // 需要保证在Excel中打开不出现乱码,编码为 CP936
             $data = mb_convert_encoding($data, 'CP936', 'UTF-8');
             // 报表数据时间范围
             $date = isset($this->view->tmln) && is_array($this->view->tmln) ? date('Y-m-d', $this->view->tmln[0]) . '至' . date('Y-m-d', $this->view->tmln[1]) : (isset($this->view->date) && Zyon_Util::isDate($this->view->date) ? $this->view->date : '');
             $name = static::$_limitedActions[$act] . $date . '.' . $ext;
             $this->force($data, $name, 'text/csv; charset=CP936');
         }
     }
     parent::postDispatch();
 }