"景先生毕设|www.jxszl.com

织梦dedecms后台文章数据导出到excel教程

2022-10-29 16:28编辑: www.jxszl.com景先生毕设
织梦dedecms后台文章数据导出到excel这个功能比较实用的,因为,很多公司虽然有网站,但是,公司其它部门可能还要把公司数据导出到纸上面,以便研究公司数据之用,所以,很多的公司对这个功能就要求使用.
导出全部勾选的文章原理是:
第I.步:批量获取选中的id,这个是由织梦的里面封装

 更多精彩就在: 51免费论文网|www.jxszl.com 
的js实现的.
第II步:把获取到的文章id进行处理转换成字符串,例如I.,II,III,V,VI
实现代码是:
if(!empty($aid)&&empty($qstr))$qstr=$aid;

if($qstr==)
{
ShowMsg(参数无效!,$ENV_GOBACK_URL);
exit();
}
$qstrs=explode(`,$qstr);
$idstrs=implode(,,$qstrs);
第III步:查询要导出的数据:
sql语句是:Select*From`dede_archives`whereidin($idstrs)
也就是说这里使用了sql语言里面in来查询表中的某些id.
只要你把上面的III步弄明白了,那么,这个功能就实现了.
===============实现方法=======================
上面那III步只是分析如何实现的,那里面的代码不用管,下面是具体的实现代码,请跟着I.步I.步操作.
下载phpexcel类库,官方已经搬到这里了:https://github.com/PHPOffice/PHPExcel
I.)下载后把Classes文件夹放到/dede/目录里面.
II)复制下面的代码保存到文件download_excel.php里面,也放到/dede/目录里面.
测试:
在浏览器里面输入:localhost/dedecms/dede/download_excel.php?action=allexport&aid=VIIIVI`VIIIVII
注意:请把红色的路径换上你的域名,上面因为我在子目录dedecms装的程序,如果你装在根目录里面,则去掉这个dedecms.
VIIIVI`VIIIVII:表示把文章id为VIIIVI和VIIIVII的文章导出来.

导出功能代码:
0I.0IIrequire_once(dirname(_FILE_)."/config.php");
0IIIif($action==allexport){
0IV//批量获取文章idwww.adminbuy.cn织梦模版网
0Vif(!empty($aid)&&empty($qstr))$qstr=$aid;
0VI
0VIIif($qstr==)
0VIII{
0IXShowMsg(参数无效!,$ENV_GOBACK_URL);
I.0exit();
I.I.}
I.II$qstrs=explode(`,$qstr);
I.III$idstrs=implode(,,$qstrs);
I.IVinclude_once(dirname(_FILE_)./Classes/PHPExcel.php);
I.V//CreatenewPHPExcelobject
I.VI$objPHPExcel=newPHPExcel();
I.VII$objActSheet=$objPHPExcel->getActiveSheet();
I.VIII//Setdocumentproperties
I.IX$objPHPExcel->getProperties()->setCreator("MaartenBalliauw")->setLastModifiedBy("MaartenBalliauw")->setTitle("OfficeII00VIIXLSXTestDocument")->setSubject("OfficeII00VIIXLSXTestDocument")->setDescription("TestdocumentforOfficeII00VIIXLSX,generatedusingPHPclasses.")->setKeywords("officeII00VIIopenxmlphp")->setCategory("Testresultfile");
II0$objPHPExcel->setActiveSheetIndex(0)
III.->setCellValue(AI.,id)
IIII->setCellValue(BI.,标题)
IIIII->setCellValue(CI.,发布时间)
IIIV->setCellValue(DI.,会员id)
IIV->setCellValue(EI.,栏目id);
IIVI$query="Select*From`dede_archives`whereidin($idstrs)";
IIVII$dsql->SetQuery($query);
IIVIII$dsql->Execute();
IIIX$index=I.;
III0while($row=$dsql->GetArray()){
IIII.$index++;
IIIII$objPHPExcel->setActiveSheetIndex(0)
IIIIII->setCellValue(A.$index,$row[id])
IIIIV->setCellValue(B.$index,$row[title])
IIIV->setCellValue(C.$index,date("Y-m-d",$row[senddate]))
IIIVI->setCellValue(D.$index,$row[mid])
IIIVII->setCellValue(E.$index,$row[typeid]);
IIIVIII}
IIIIX//Renameworksheet
IV0$objPHPExcel->getActiveSheet()->setTitle(Simple);
IVI.//Setactivesheetindextothefirstsheet,soExcelopensthisasthefirstsheet
IVII$objPHPExcel->setActiveSheetIndex(0);
IVIII//Redirectoutputtoaclient’swebbrowser(ExcelV)
IVIVheader(Content-Type:application/vnd.ms-excel);
IVVheader(Content-Disposition:attachment;filename="list.xls");
IVVIheader(Cache-Control:max-age=0);
IVVII$objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,ExcelV);
IVVIII$objWriter->save(php://output);
IVIXexit;
V0}
VI.?>


结果:
导出VIIIVI,VIIIVII

==============完整版====================
上面只是让你测试,不用写做太多事,建议先把上面的测试成功了,再看下面的,下面才是真正应用到网站里面的.
上面已经实现导出功能,但是,总不能在浏览器里面输入文章id吧.
最终还是通过后台选择文章,然后,导出.
这个功能也已经实现了.

在后台添加I.个导出文章按扭导出文档".
在content_list.htm里面添加按扭代码:
导出文档

批量获取id方法:
I..实现代码是通过在/dede/js/list.js添加I.个批量获取id函数.
代码如下所示:
functioneportArc(aid){
varqstr=getCheckboxItem();
if(aid==0)aid=getOneItem();
if(qstr==)
{
alert(必须选择I.个或多个文档!);
return;
}
location="download_excel.php?aid="+aid+"&action=allexport&qstr="+qstr;

}
II.注册这个函数到上下文菜单
即在函数functionShowMenu(evt,obj,aid,atitle)里面注册,代码是:
newContextItem("导出的文档",function(){eportArc(aid);}),

原文链接:http://www.jxszl.com/biancheng/dedecms/75203.html