//导出的数据源 二维数组 $data = [ [\'name\' => \'1\',\'phone\' =>\'1的电话\',\'pic_url\' =>[]], [\'name\' => \'2\',\'phone\' =>\'2的电话\',\'pic_url\' =>[]] ]; //设置参数 $indexKey = [\'name\', \'phone\', \'pic_url\'];//与表头对应的要导出的二维数组的键 $thValue = ["姓名", \'电话\', \'图片\'];//表头 $fileName = "测试导出表";//表名 $table = \'\'; //需要特殊处理的单元格,对应二维数组的键 $urlArr = [\'pic_url\']; //表头 $table .= "<table border=\'1\' cellspacing=\'0\' cellpadding=\'0\'><thead><tr>"; foreach($thValue as $v) { $table .= "<th> ".$v."</th >"; } $table .= "</tr></thead><tbody>"; //主体 foreach ($data as $value) { $table .= "<tr align=\'left\'>"; foreach ($indexKey as $val) { if (in_array($val,$urlArr)) { //处理图片单元格 且合并到一格 $table .= "<td width=\'800\'>"; //示例的链接为数组,如果不是数组将遍历去除即可 foreach ($value[$val] as $v_url) { $table .= "<div style=\'width: 800px;\'><a href=\'". $v_url ."\'>" . $v_url . "</a></div>"; } $table .= "</td>"; } else { //普通单元格 内容前面留一个空格,防止长数字被格式化 $table .= "<td width=\'150\'> " . $value[$val] . "</td>"; } } $table .= "</tr>"; } //表结尾 $table .= "</tbody></table>"; //通过header头控制输出excel表格 header("Pragma: public"); header("Expires: 0"); header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); header("Content-Type:application/force-download"); header("Content-Type:application/vnd.ms-execl"); header("Content-Type:application/octet-stream"); header("Content-Type:application/download"); header(\'Content-Disposition:attachment;filename="\'.$fileName.\'.xls"\'); header("Content-Transfer-Encoding:binary"); echo $table;
这个方法的导出也可以控制表格的背景颜色字体颜色等一些简单样式
当时做一个导出表格,要求导出的表格包含超链接并且能够合并单元格,然后我在网上找了一个将单个单元格变成点击触发超链接的方法,但是当一个合并后的单元格内每个链接都要可以点击跳转时,就行不通了,然后我又找了大半天,看到一个方法即上述的方法,可惜当时没有收藏,现在找不到了,补充到这里
请发表评论