|
dede织梦系统怎样导出后台的文章或自定义模型中的数据到excel,并且不出现乱码
在后台目录创建一个php文件toexcel.php,在最上面加入代码;
require_once(dirname(__FILE__).'/config.php');
require_once(DEDEINC.'/typelink.class.php');
require_once(DEDEINC.'/datalistcp.class.php');
require_once(DEDEADMIN.'/inc/inc_list_functions.php');
加入导出到excel类;
- class Excel
- {
- private $head;
- private $body;
- public function addHeader($arr){
- foreach($arr as $headVal){
- $headVal = $this->charset($headVal);
- $this->head .= "{$headVal}\t ";
- }
- $this->head .= "\n";
- }
- public function addBody($arr){
- foreach($arr as $arrBody){
- foreach($arrBody as $bodyVal){
- $bodyVal = $this->charset($bodyVal);
- $this->body .= "{$bodyVal}\t ";
- }
- $this->body .= "\n";
- }
- }
- public function downLoad($filename=''){
- if(!$filename)
- $filename = date('YmdHis',time()).'.xls';
- header("Content-type:application/vnd.ms-excel");
- header("Content-Disposition:attachment;filename=$filename");
- header("Content-Type:charset=gb2312");
- if($this->head)
- echo $this->head;
- echo $this->body;
- }
- public function charset($string){
- return mb_convert_encoding($string,'GBK','auto');
- }
- }
复制代码
代码解释:
1.输出列名数组,并转码
- public function addHeader($arr){
- foreach($arr as $headVal){
- $headVal = $this->charset($headVal);
- $this->head .= "{$headVal}\t ";
- }
- $this->head .= "\n";
- }
复制代码
2.输出导出内容数组,并转码
- public function addBody($arr){
- foreach($arr as $arrBody){
- foreach($arrBody as $bodyVal){
- $bodyVal = $this->charset($bodyVal);
- $this->body .= "{$bodyVal}\t ";
- }
- $this->body .= "\n";
- }
- }
复制代码
3.设置header头部信息和导出到excel内容,并输出到浏览器
- public function downLoad($filename=''){
- if(!$filename)
- $filename = date('YmdHis',time()).'.xls';
- header("Content-type:application/vnd.ms-excel");
- header("Content-Disposition:attachment;filename=$filename");
- header("Content-Type:charset=gb2312");
- if($this->head)
- echo $this->head;
- echo $this->body;
- }
复制代码
4.转码,这里不用iconv函数,有可能会与gd冲突导致输出空白。用
- public function charset($string){
- return mb_convert_encoding($string,'GBK','auto');
- }
-
- 7.调用方法;
- $excel = new Excel();
- $excel->addHeader(array('列一','列二','列三','列四'));
- global $dsql;
- $sql="select 列一字段,列二字段,列三字段,列四字段 from 表名";
- $dsql->SetQuery($sql);
- $dsql->Execute();
- while($row = $dsql->GetArray()){
- $list[]=$row;
- }
- unset($row);
- $excel->addBody($list);
- $excel->downLoad();
复制代码
后天添加导出到excel代码:
找到后台目录下的templets目录,下面有个content_list.htm文件,
找到<a href="javascript:;" onClick="cAtts('attsDel',event,this)" class="coolbg"> 删除属性 </a>
在后面加一段代码
- <?php if($channelid==1) echo " <a href="toexcel.php" class="coolbg" target="_blank">导出到excel</a>\r\n"; ?>
复制代码
$channelid就是你的模型id,根据你导出的表填写。填写完之后打开后台栏目列表就出现导出按钮
|
|