欢迎访问融科网络!我们专注于郑州网站建设郑州网站制作郑州网站设计郑州做网站等相关服务!
营销之道 干货分享
了解企业新动态,分享前沿的营销推广干货,成长路上,我们携手同行

编程代码

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

标签: 作者:融科网络 | 点击:
05

Nov
2019

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

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

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

DedeCMS表单生成Excel推荐办法

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

前台预览</a>  

后面增加

| <a href=http://www.dede58.com/a/dedejq/"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', 'list', 'edit', 'check', '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.downloadPHPExcel的SDK,download地址:https://github.com/PHPOffice/PHPExcel。

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

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

前台预览</a>  

后面增加

| <a href=http://www.dede58.com/a/dedejq/"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','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'); //初始化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++; } // download这个表格,在浏览器输出 header("Pragma: public"); header("Expires: 0"); header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); header("Content-Type:application/force-下载"); header("Content-Type:application/vnd.ms-execl"); header("Content-Type:application/octet-stream"); header("Content-Type:application/下载");; header('Content-Disposition:attachment;filename='.$filename.''); header("Content-Transfer-Encoding:binary"); $objWriter->save('php://output'); } /* * 导出文件,还可以设置源码 * */ function exportExcel($list,$filename,$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','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'); //$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.接下来当然是download这个表格了,在浏览器输出就好了 header("Pragma: public"); header("Expires: 0"); header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); header("Content-Type:application/force-下载"); header("Content-Type:application/vnd.ms-execl"); header("Content-Type:application/octet-stream"); header("Content-Type:application/下载");; header('Content-Disposition:attachment;filename="'.$filename.'.xls"'); header("Content-Transfer-Encoding:binary"); $objWriter->save('php://output'); }  
/* * 导出文件,还可以设置源码 * */ function exportExcel($list,$filename,$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','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'); //$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.接下来当然是download这个表格了,在浏览器输出就好了 header("Pragma: public"); header("Expires: 0"); header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); header("Content-Type:application/force-下载"); header("Content-Type:application/vnd.ms-execl"); header("Content-Type:application/octet-stream"); header("Content-Type:application/下载");; header('Content-Disposition:attachment;filename="'.$filename.'.xls"'); header("Content-Transfer-Encoding:binary"); $objWriter->save('php://output'); }  
设置一个excel源码

使用该源码导出数据

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

郑州融科网络专注于企业网站建设、网站制作、高端网站设计,郑州荥阳、上街做网站就找融科网络!
本文章网址:http://www.ppssdd.com/code/14841.html。转载请保留出处,谢谢合作!

全网(营销型+响应式)专业定制

快速搭建高询盘+营销独立站

微信扫一扫 添加微信

推荐分享,免费SEO诊断

扫码加好友,即送价值1880元的SEO优化教程

(网站没排名,轻松让关键词上首页!专注H5企业建站+网站优化推广)

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

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

  • 网站建设咨询
  • 网站建设案例
建站流程
  • 网站需
    求分析
  • 网站策
    划方案
  • 页面风
    格设计
  • 程序设
    计研发
  • 资料录
    入优化
  • 确认交
    付使用
  • 后续跟
    踪服务
  • 151-3895-5886
  • 品牌网站建设定制
  • 营销型网站建设定制