织梦自定义表单数据导出到excel

2020-05-07 二次开发 热度 °

导出效果

不写死任何字段,不写死任何东西,修改2个文件,让织梦自定义表单自由导出到Excel表格里。
导出的excel文件请用wps软件打开,office软件下好像会乱码。

实现方法

1、/dede/templets/diy_main.htm 找到
前台预览</a>
在它的下面加入一行
| <a href="diy_list.php?action=excel&diyid={dede:field.diyid/}" target="_blank">导出表单Excel</a>
2、/dede/diy_list.php 找到
array('post', 'list', 'edit', 'check', 'delete'))
修改成
array('post', 'list', 'edit', 'check', 'delete', 'excel'))
继续找到
else {
    showmsg('未定义操作', "-1");
}
在它的上面加入
else if($action == 'excel')
{
  header("Content-type:application/vnd.ms-excel");
  header("Content-Disposition:attachment;filename={$diy->name}_".date("Y-m-d").".xls");
  $fieldlist = $diy->getFieldList(); echo "<table><tr>"; foreach($fieldlist as $field=>$fielddata)
  { echo "<th>{$fielddata[0]}</th>";
  } echo "<th>状态</th>"; echo "</tr>";
  $sql = "SELECT * FROM {$diy->table} ORDER BY id DESC";
  $dsql->SetQuery($sql);
  $dsql->Execute('t'); while($arr = $dsql->GetArray('t'))
  { echo "<tr>"; foreach($fieldlist as $key => $field)
    { echo "<td>".$arr[$key]."</td>";
    }
    $status = $arr['ifcheck'] == 1 ? '已审核' : '未审核'; echo "<td>".$status."</td>"; echo "</tr>";
  } echo "</table>";
}
至此,修改完成。