织梦CMS系统导出数据到excel教程

2017-01-05dedecms开发
1339

本来这个功能是一个朋友要做的,因为,之前从没有接触过excel,这个功能也没有研究过,但是,这个功能比较实用的,因为,很多公司虽然有网站,但是,公司其它部门可能还要把公司数据导出到纸上面,以便研究公司数据之用,所以,很多的公司对这个功能就要求使用。

  这几天研究了一下从织梦导出数据功能,本来想自己去写一个这个php程序导出到excel功能来,但是,自己从没有研究过excel,所以,就没有向下去写代码,于是搜索了一下网上的关于这个教程,结果搜索的教程到是不少,但是,没有几个是正确的,包括百度经验里面,测试了无数个也不行。

  不过让我搜索到了一个外国人写的phpexcel类库,这个就是专门处理从数据库到excel的,下载地址:http://phpexcel.codeplex.com/releases/view/107442

  这个里面有很多的例子,包括excel,csv,word,pdf,htm等从数据库导出来的文件格式,可以参考一下例子。

  织梦基地先把从织梦系统导出来的效果上个图给大家看看:

 

  但是,我遇到了一个问题就是以前的时间,在excel是正常显示的,但是,现在加上的时间则显示:1970-01-01 ,我搜索了一下网上教程,也没有找到相关教程。看到网上说excel也有bug 而且excel计算的时间是从1900-1-1开始的,不知道是不是还要换算一下?

    时间问题终于找到原因了,原来字段写错了。本来是pubdate,结果写成了sentdate

  其它都是正常显示的,现在就介绍一下从织梦系统导出数据的方法:

1.从国外网站下载上面的phpexcel类库,解压后,放到根目录里面。

2.然后,写导出程序,这个可以参考这里面的例子写,请注意的是:若你的不行,程序可能会提示404错误,这个就是你的路径没有设置好,刚开始时,我也是这个原因一直弄不对,最后,才发现原来是路径错了。

  这个导出程序主要做如下四步:

   a. 从织梦中查询出数据

   b.设置表格

   c.把数据放入表格

   c.输出数据到excel里面

  里面的设置大多数都是调用phpexcel类里面的函数,这里不多解释了,看我在文件dedegenban.php写的代码:

  1. require_once (DEDEINC . '/common.func.php');
  2.  
  3. if ($action == 'allexport') {
  4.  
  5.     include_once DEDEINC . '/PHPExcel.php';
  6.     // Create new PHPExcel object
  7.     $objPHPExcel = new PHPExcel();
  8.  
  9.     $objActSheet = $objPHPExcel->getActiveSheet();
  10.  
  11.     // Set document properties
  12.     $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")->setLastModifiedBy("Maarten Balliauw")
  13.     ->setTitle("Office 2007 XLSX Test Document")->setSubject("Office 2007 XLSX Test Document")
  14.     ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")->setKeywords("office 2007 openxml php")
  15.     ->setCategory("Test result file");
  16.           //www.genban.org 跟版网
  17.     $objPHPExcel->setActiveSheetIndex(0)
  18.     ->setCellValue('A1', 'id')
  19.     ->setCellValue('B1', '标题')
  20.     ->setCellValue('C1', '排序')
  21.     ->setCellValue('D1', '出版时间')
  22.     ->setCellValue('E1', '关键词')
  23.     ->setCellValue('F1', '简介')
  24.     ->setCellValue('G1', '发布时间')
  25.     ->setCellValue('H1', '会员id')
  26.     ->setCellValue('I1', 'flag')
  27.     ->setCellValue('J1', '栏目id');
  28.     $query = "Select * From `wmd_archives` ";
  29.     $dsql->SetQuery($query);
  30.     $dsql->Execute();
  31.  
  32.     $index = 1;
  33.  
  34.     while ($row = $dsql->GetArray()) {
  35.  
  36.         $index++;
  37.         $objPHPExcel->setActiveSheetIndex(0)
  38.         ->setCellValue('A' .
  39.         $index, $row['id'])->setCellValue('B' .
  40.         $index, iconv("gb2312","utf-8",$row['title']))->setCellValue('C' .
  41.         $index, $row['sortrank'])->setCellValue('D' .
  42.         $index, "2015-7-23")->setCellValueExplicit('E' .
  43.         $index, iconv("gb2312","utf-8",$row['keywords']))->setCellValue('F' .
  44.         $index, iconv("gb2312","utf-8",$row['description']))->setCellValue('G' .
  45.         $index, gmdate("Y-m-d",$row['pubdate']))->setCellValue('H' .
  46.         $index, $row['mid'])->setCellValue('I' .
  47.         $index, $row['flag'])->setCellValue('J' .
  48.         $index, $row['typeid']);
  49.     }
  50.  
  51.     // Rename worksheetwww.dedebase.com
  52.     $objPHPExcel->getActiveSheet()->setTitle('Simple');
  53.  
  54.     // Set active sheet index to the first sheet, so Excel opens this as the first sheet
  55.     $objPHPExcel->setActiveSheetIndex(0);
  56.  
  57.     // Redirect output to a client’s web browser (Excel5)
  58.     header('Content-Type: application/vnd.ms-excel');
  59.  
  60.     header('Content-Disposition: attachment;filename="list.xls"');
  61.     header('Cache-Control: max-age=0');
  62.  
  63.     $objWriter = PHPExcel_IOFactory :: createWriter($objPHPExcel, 'Excel5');
  64.     $objWriter->save('php://output');
  65.     exit;
  66.  
  67. }
  特别特别注意:在这个最上一行要写上你的从网站上下载下来的phpexcel类的路径,也就是把这个类引入到这个文件里面,只有引入到里面才能调用。

  最后,在你的模板里面把下面这二行中的任意一行写在模板里即可:
  1.     <input name="ss12" value="导出全部订单" style="width:90px;margin-right:6px" onclick="location='crtadmin/download_oneapply.php?action=allexport';" class="np coolbg" type="button">
  2.     <a href='crtadmin/download_excel.php?action=allexport'>execl</a>
我这里放二行是因为,有的站长可能只需要一个超链接,有的可能需要一个input,二个任选一个即可。
The End

相关推荐

织梦cms批量删除所有无效TAGS的办法
使用过DedeCMS的站长应当都遇到过这样的问题,在我们删掉一些文章内容后,tags标识中就慢慢拥有许多失效的标识存有,这种TAGS标识并不会跟随大家删掉文章内容一起删掉,如果是受欢迎的词还行,有很多文章内容都是有,如果是小众词,便会发生在TAGS目录有词,...
2023-08-17 dedecms开发
181

怎么修改织梦DEDECMS源码tags标签字数限制
修改织梦DEDECMS中TAG标签字数长度限制的方法共两个步骤,分别是对数据库字数和提交文件的字数进行修改。 一、我们通过织梦DEDECMS后台程序中的系统设置栏目下的SQL命令行工具,来修改数据库中表wmd_tagindex 和wmd_taglist的tag字段属性,将TAG字段属性中...
2023-02-16 dedecms开发
196

织梦dedecms列表页实现第一页与其他页调用不同模板的办法
我们想让dedecms织梦第一页与其他第二页、第三页、、、后面的页调用的不同模板,这个要怎么实现呢? 第一步 修改核心文件 打开 /include/arc.listview.class.php 找到,大概在第330行 $this-ParseDMFields($this-PageNo,1); 在它的上面加入: $tempfile = $GL...
2022-11-19 dedecms开发
195

织梦dedecms调用当前栏目文章数的方法
这篇文章给大家分享的是有关织梦dedecms调用当前栏目文章数的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。 做模板时,经常需要为每个栏目加上此栏目的文章数。和大家分享下实现的方法,此方法适合5.6及5.7、5.7sp1其它...
2022-11-05 dedecms开发
186

dedecms织梦无需登录注册可下单购买的修改
dedecms织梦无需登录注册可下单购买的修改,首先找到/plus/carbuaction.php文件,找到如下代码: //确认用户登录信息if($cfg_ml-IsLogin()){ $userid = $cfg_ml-M_ID;}else{ $username = trim($username); $password = trim($password); if(empty($username)...
2022-11-02 dedecms开发
171

DEDECMS织梦复制https链接网站图片无法本地化的解决办法
现在许多网站使用了SSL技术,网站采用https链接,我们在复制https链接网站的内容,发现图片无法本地化,那么我们想要将这些图片本地化,要怎么操作呢? 第一步: 找到dede/inc/inc_archives_functions.php (注:前边红色的dede目录是您的后台目录) 定位到...
2022-06-15 dedecms开发
125