DedeCMS织梦自定义表单导出Excel文档

DedeCMS织梦自定义表单导出Excel文档,第1张

概述DedeCMS自定义表单功能一般,但也满足了大多数人的需求。需要查看表单需要登录后台,如果用户提交的订单并发送到邮箱也不能全部统一导出,在月度或季度的时候,就比较麻烦。 前面做过一个关于学校报名网站的二次开发,需要用到这个功能,分享一个DedeCMS自定

Dedecms自定义表单功能一般,但也满足了大多数人的需求。需要查看表单需要登录后台,如果用户提交的订单并发送到邮箱也不能全部统一导出,在月度或季度的时候,就比较麻烦。

前面做过一个关于学校报名网站的二次开发,需要用到这个功能,分享一个Dedecms自定义表单导出功能的教程,比较简单,只需要修改两个文件,不需要下载第三方SDK(PHPExcel)开发包,感兴趣的可以自己下载,本帖后有说明。

Dedecms表单生成Excel推荐方法

1、打开/dede/templets/diy_main.htm 找到

前台预览</a>

        后面增加

| <a href="diy_List.PHP?action=push&diyID={dede:fIEld.diyID/}" target="_blank">导出Excel</a>

2、打开/dede/diy_List.PHP 找到

array('post','List','edit','check','delete'))

        在 'delete' 后面增加 ,'push',如下

array('post','delete','push'))

        在最下面找到

else{    showmsg('未定义 *** 作',"-1");}

        在这段之前增加代码

else if($action == 'push'){	header("Content-type:application/vnd.ms-excel");	header("Content-disposition:attachment;filename={$diy->name}_".date("Y-m-d").".xls");//表格命名方式	$fIEldList = $diy->getFIEldList();	echo "<table><tr>";	foreach($fIEldList as $fIEld=>$fIElddata)	{		echo "<th>{$fIElddata[0]}</th>";	}	echo "<th>状态</th>";	echo "</tr>";	$sql = "SELECT * FROM {$diy->table} ORDER BY ID DESC";	$dsql->Setquery($sql);	$dsql->Execute('t');	while($arr = $dsql->GetArray('t'))	{		echo "<tr>";		foreach($fIEldList as $key => $fIEld)		{			echo "<td>".$arr[$key]."</td>";		}		$status = $arr['ifcheck'] == 1 ? '已审核' : '未审核';		echo "<td>".$status."</td>";		echo "</tr>";	}	echo "</table>";}

        导出来的文件不带格式,可以根据自己的需要添加、修改。

Dedecms第三方SDK生成并导出Excel

1.下载PHPExcel的SDK,下载地址:https://github.com/PHPOffice/PHPExcel。

2.将SDK解压之后的Class文件拷贝到自己的项目,如本例的放在根目录下。

        打开/dede/templets/diy_main.htm 找到

前台预览</a>

        后面增加

| <a href="diy_List.PHP?action=push&diyID={dede:fIEld.diyID/}" target="_blank">导出Excel</a>

        打开/dede/diy_List.PHP 增加如下代码。

else if($action == 'push'){...}

        上面省略号(...)的内容如下,代码比较多,分别进行说明

/* * *Excel文件读取 *  */function excelToArray(){  require_once dirname(__file__) . '/Classes/PHPExcel/IOFactory.PHP';  //项目路径//加载excel文件  $filename = dirname(__file__).'/result.xlsx'; //根目录 $objPHPExcelReader = PHPExcel_IOFactory::load($filename);    $sheet = $objPHPExcelReader->getSheet(0);        // 读取第一个工作表(编号从 0 开始)  $highestRow = $sheet->getHighestRow();           // 取得总行数  $highestColumn = $sheet->getHighestColumn();     // 取得总列数  $arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');  // 一次读取一列  $res_arr = array();  for ($row = 2; $row <= $highestRow; $row++) {  $row_arr = array();  for ($column = 0; $arr[$column] != 'F'; $column++) {  $val = $sheet->getCellByColumnAndRow($column,$row)->getValue();  $row_arr[] = $val;  }  $res_arr[] = $row_arr;  }  return $res_arr;  }  /* * 创建(导出)Excel数据表格  * @param  array   $List        要导出的数组格式的数据  * @param  string  $filename    导出的Excel表格数据表的文件名  * @param  array   $indexKey    $List数组中与Excel表格表头$header中每个项目对应的字段的名字(key值)  * @param  array   $startRow    第一条数据在Excel表格中起始行  * @param  [bool]  $excel2007   是否生成Excel2007(.xlsx)以上兼容的数据表  * 比如: $indexKey与$List数组对应关系如下:  *     $indexKey = array('ID','username','sex','age');  *     $List = array(array('ID'=>1,'username'=>'YQJ','sex'=>'男','age'=>24));  */  function exportExcel($List,$filename,$indexKey,$startRow=1,$excel2007=false){  //文件引入  require_once APP_ROOT.'/Classes/PHPExcel.PHP';  require_once APP_ROOT.'/Classes/PHPExcel/Writer/Excel2007.PHP';  if(empty($filename)) $filename = time();  if( !is_array($indexKey)) return false;  $header_arr = array('A','Z');  //初始化PHPExcel()  $objPHPExcel = new PHPExcel();  //设置保存版本格式  if($excel2007){  $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);  $filename = $filename.'.xlsx';  }else{$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);  $filename = $filename.'.xls';  }  //接下来就是写数据到表格里面去  $objActSheet = $objPHPExcel->getActiveSheet();  //$startRow = 1;  foreach ($List as $row) {  foreach ($indexKey as $key => $value){  //这里是设置单元格的内容  $objActSheet->setCellValue($header_arr[$key].$startRow,$row[$value]);  }  $startRow++;  }  // 下载这个表格,在浏览器输出  header("Pragma: public");  header("Expires: 0");  header("Cache-Control:must-revalIDate,post-check=0,pre-check=0");  header("Content-Type:application/force-download");  header("Content-Type:application/vnd.ms-execl");  header("Content-Type:application/octet-stream");  header("Content-Type:application/download");;  header('Content-disposition:attachment;filename='.$filename.'');  header("Content-transfer-encoding:binary");  $objWriter->save('PHP://output');  }  /* *导出文件,还可以设置模板 * */function exportExcel($List,$indexKey=array()){  require_once dirname(__file__) . '/Classes/PHPExcel/IOFactory.PHP';  require_once dirname(__file__) . '/Classes/PHPExcel.PHP';  require_once dirname(__file__) . '/Classes/PHPExcel/Writer/Excel2007.PHP';  $header_arr = array('A','Z');  //$objPHPExcel = new PHPExcel();                        //初始化PHPExcel(),不使用模板  $template = dirname(__file__).'/template.xls';          //使用模板  $objPHPExcel = PHPExcel_IOFactory::load($template);     //加载excel文件,设置模板  $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);  //设置保存版本格式  //接下来就是写数据到表格里面去  $objActSheet = $objPHPExcel->getActiveSheet();  $objActSheet->setCellValue('A2',"活动名称:江南极客");  $objActSheet->setCellValue('C2',"导出时间:".date('Y-m-d H:i:s'));  $i = 4;  foreach ($List as $row) {  foreach ($indexKey as $key => $value){  //这里是设置单元格的内容  $objActSheet->setCellValue($header_arr[$key].$i,$row[$value]);  }  $i++;  }  // 1.保存至本地Excel表格  //$objWriter->save($filename.'.xls');  // 2.接下来当然是下载这个表格了,在浏览器输出就好了  header("Pragma: public");  header("Expires: 0");  header("Cache-Control:must-revalIDate,pre-check=0");  header("Content-Type:application/force-download");  header("Content-Type:application/vnd.ms-execl");  header("Content-Type:application/octet-stream");  header("Content-Type:application/download");;  header('Content-disposition:attachment;filename="'.$filename.'.xls"');  header("Content-transfer-encoding:binary");  $objWriter->save('PHP://output');  }  
/* *导出文件,还可以设置模板 * */function exportExcel($List,pre-check=0");  header("Content-Type:application/force-download");  header("Content-Type:application/vnd.ms-execl");  header("Content-Type:application/octet-stream");  header("Content-Type:application/download");;  header('Content-disposition:attachment;filename="'.$filename.'.xls"');  header("Content-transfer-encoding:binary");  $objWriter->save('PHP://output');  }  
设置一个excel模板

使用该模板导出数据

除此之外还可以对表格属性做很多自定义。感兴趣的自己看看吧!

上一篇: 织梦黑帽SEO教程,给网站添加暗链代码,个人站可尝试

下一篇:DedeCMS表单提交恶意提交增加验证码

总结

以上是内存溢出为你收集整理的DedeCMS织梦自定义表单导出Excel文档全部内容,希望文章能够帮你解决DedeCMS织梦自定义表单导出Excel文档所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zz/1037499.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存