首先,我们需要了解导出全部勾选文章的基本原理:
第一步:批量获取选中的id,这一步由Dedecms系统内部封装的js实现。
第二步:将获取到的文章id进行处理转换成字符串形式,例如1,2,3,5,6。
第三步:查询要导出的数据,使用SQL语言中的in来查询表中的某些id。
接下来,我们将详细介绍具体的实现方法:
getActiveSheet();
// Set document properties
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")->setLastModifiedBy("Maarten Balliauw")->setTitle("Office 2007 XLSX Test Document")->setSubject("Office 2007 XLSX Test Document")->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")->setKeywords("office 2007 openxml php")->setCategory("Test result file");
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'id')
->setCellValue('B1', '标题')
->setCellValue('C1', '发布时间')
->setCellValue('D1', '会员id')
->setCellValue('E1', '栏目id');
$query = "Select * From `dede_archives` where id in($idstrs) ";
$dsql->SetQuery($query);
$dsql->Execute();
$index = 1;
while($row = $dsql->GetArray()) {
$index++;
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A'.$index, $row['id'])
->setCellValue('B'.$index, $row['title'])
->setCellValue('C'.$index, date("Y-m-d",$row['senddate']))
->setCellValue('D'.$index, $row['mid'])
->setCellValue('E'.$index, $row['typeid']);
}
// Rename worksheet
$objPHPExcel->getActiveSheet()->setTitle('Simple');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Redirect output to a client’s web browser (Excel5)
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="list.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory :: createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}
?>
注意:请将红色路径替换为您的域名。如果安装在根目录下,则去掉dedecms部分。
结果:成功导出86,87对应的文章。
为了更方便地使用此功能,建议在后台添加一个“导出文档”按钮。具体操作如下:
在content_list.htm文件中添加按钮代码: 导出文档
同时,还需要在/dede/js/list.js文件中添加批量获取id函数:
function eportArc(aid){
var qstr=getCheckboxItem();
if(aid==0) aid = getOneItem();
if(qstr==''){
alert('必须选择一个或多个文档!');
return;
}
location="download_excel.php?aid="+aid+"&action=allexport&qstr="+qstr;
}
通过以上步骤,您可以轻松实现Dedecms后台文章数据的批量导出功能。希望这些信息对您有所帮助!