• 全国400电话网上服务平台
    强大号码库资源任选,方便,快捷,快速开通。
    咨询热线:400-1100-266  

    织梦CMS系统导出数据到excel教程
    POST TIME:2017-11-12 23:51

    本来这个功能是一个朋友要做的,因为,之前从没有接触过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. if ($action == 'allexport') {
    3. include_once DEDEINC . '/PHPExcel.php';
    4. // Create new PHPExcel object
    5. $objPHPExcel = new PHPExcel();
    6. $objActSheet = $objPHPExcel->getActiveSheet();
    7. // Set document properties
    8. $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")->setLastModifiedBy("Maarten Balliauw")
    9. ->setTitle("Office 2007 XLSX Test Document")->setSubject("Office 2007 XLSX Test Document")
    10. ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")->setKeywords("office 2007 openxml php")
    11. ->setCategory("Test result file");
    12. //www.genban.org 跟版网
    13. $objPHPExcel->setActiveSheetIndex(0)
    14. ->setCellValue('A1', 'id')
    15. ->setCellValue('B1', '标题')
    16. ->setCellValue('C1', '排序')
    17. ->setCellValue('D1', '出版时间')
    18. ->setCellValue('E1', '关键词')
    19. ->setCellValue('F1', '简介')
    20. ->setCellValue('G1', '发布时间')
    21. ->setCellValue('H1', '会员id')
    22. ->setCellValue('I1', 'flag')
    23. ->setCellValue('J1', '栏目id');
    24. $query = "Select * From `dede_archives` ";
    25. $dsql->SetQuery($query);
    26. $dsql->Execute();
    27. $index = 1;
    28. while ($row = $dsql->GetArray()) {
    29. $index++;
    30. $objPHPExcel->setActiveSheetIndex(0)
    31. ->setCellValue('A' .
    32. $index, $row['id'])->setCellValue('B' .
    33. $index, iconv("gb2312","utf-8",$row['title']))->setCellValue('C' .
    34. $index, $row['sortrank'])->setCellValue('D' .
    35. $index, "2015-7-23")->setCellValueExplicit('E' .
    36. $index, iconv("gb2312","utf-8",$row['keywords']))->setCellValue('F' .
    37. $index, iconv("gb2312","utf-8",$row['description']))->setCellValue('G' .
    38. $index, gmdate("Y-m-d",$row['pubdate']))->setCellValue('H' .
    39. $index, $row['mid'])->setCellValue('I' .
    40. $index, $row['flag'])->setCellValue('J' .
    41. $index, $row['typeid']);
    42. }
    43. // Rename worksheetwww.dedebase.com
    44. $objPHPExcel->getActiveSheet()->setTitle('Simple');
    45. // Set active sheet index to the first sheet, so Excel opens this as the first sheet
    46. $objPHPExcel->setActiveSheetIndex(0);
    47. // Redirect output to a client’s web browser (Excel5)
    48. header('Content-Type: application/vnd.ms-excel');
    49. header('Content-Disposition: attachment;filename="list.xls"');
    50. header('Cache-Control: max-age=0');
    51. $objWriter = PHPExcel_IOFactory :: createWriter($objPHPExcel, 'Excel5');
    52. $objWriter->save('php://output');
    53. exit;
    54. }
    特别特别注意:在这个最上一行要写上你的从网站上下载下来的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,二个任选一个即可。
    
    关于我们 | 付款方式 | 建站知识 | 增值服务 | 网站模板
    Copyright © 2003-2016
    时间:9:00-21:00 (节假日不休)
    版权所有:巨人网络(扬州)科技有限公司
    总部地址:江苏省信息产业基地11号楼四层
    《增值电信业务经营许可证》 苏B2-20120278
    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信

    微信号已复制,请打开微信添加咨询详情!