在使用Dedecms进行网站管理时,导出订单列表到Excel表是一项常见的需求。本文将详细介绍如何实现这一功能,并确保导出的Excel文件能够正确显示数据。
首先,我们来看一下最终的导出效果:

以下是具体的操作步骤:
1. 可选择导出指定的Dedecms CMS订单,如果不选择任何订单,则会导出所有订单。
2. 导出的Excel文件会按照当前时间命名,以便于区分不同的导出记录。
3. 建议使用WPS软件打开导出的Excel文件,因为在Office软件下可能会出现乱码问题。
接下来是具体的代码修改步骤:
1. 打开 /dede/shops_operations.php 文件,找到以下代码:
else if ($dopost == 'delete')
在其上方添加以下代码:
else if ($dopost == 'out')
{
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=".date("Y-m-d-H-i-s").".xls");
echo "";
echo "订单号 ";
echo "商品名称 ";
echo "单价(元/单位) ";
echo "数量 ";
echo "支付方式 ";
echo "配送费 ";
echo "购买时间 ";
echo "收货人 ";
echo "地址 ";
echo "邮编 ";
echo "联系电话 ";
echo "邮箱 ";
echo "留言 ";
echo "合计(元) ";
echo "状态 ";
echo " ";
$wh = '';
if( !empty($nid) )
{
$nids = explode('`',$nid);
foreach($nids as $n)
{
if($wh=='') $wh = " WHERE o.oid='$n' ";
else $wh .= " OR o.oid='$n' ";
}
}
$sql = "SELECT o.*,p.title,p.price as uprice,d.dname,u.* FROM dede_shops_orders as o left join dede_shops_products as p on o.oid=p.oid left join dede_shops_delivery as d on d.pid=o.pid LEFT JOIN dede_shops_userinfo AS u ON o.oid=u.oid $wh";
$dsql->SetQuery($sql);
$dsql->Execute('t');
while($arr = $dsql->GetArray('t'))
{
echo "";
echo "".$arr['oid']." ";//订单号
echo "".$arr['title']." ";//商品名称
echo "".$arr['uprice']." ";//单价
echo "".$arr['cartcount']." ";//数量
echo "".GetsType($arr['paytype'])." ";//支付方式
echo "".$arr['dname']."费用:".$arr['dprice']."元 ";//配送费
echo "".GetDateTimeMk($arr['stime'])." ";//购买时间
echo "".$arr['consignee']." ";//收货人
echo "".$arr['address']." ";//地址
echo "".$arr['zip']." ";//邮编
echo "".$arr['tel']." ";//联系电话
echo "".$arr['email']." ";//邮箱
echo "".$arr['des']." ";//留言
echo "".$arr['priceCount']." ";//合计
echo "".GetSta($arr['state'])." ";//状态
echo " ";
}
echo "
";
exit();
}
2. 打开 /dede/shops_operations.htm 文件,找到以下代码:
在其下方添加以下代码:
3. 继续在同一文件中找到以下代码:
function PushSel(){
在其上方添加以下代码:
function OutSel()
{
var nid = getCheckboxItem();
location.href = "shops_operations.php?dopost=out&nid="+nid;
}
完成以上步骤后,您就可以成功实现Dedecms订单列表的导出功能了。请务必仔细阅读教程,注意代码添加的位置,有的需要在下方添加,有的则需要在上方添加。