PHP 当前表单数据保存为excel文件
发布网友
发布时间:2022-04-21 23:22
我来回答
共2个回答
热心网友
时间:2022-04-06 07:07
构造函数:
function down_xls($data, $keynames, $name='dataxls') {
$xls[] = "<html><meta http-equiv=content-type content=\"text/html; charset=UTF-8\"><body><table border='1'>";
$xls[] = "<tr><td>ID</td><td>" . implode("</td><td>", array_values($keynames)) . '</td></tr>';
foreach($data As $o) {
$line = array(++$index);
foreach($keynames AS $k=>$v) {
$line[] = $o[$k];
}
$xls[] = '<tr><td>'. implode("</td><td>", $line) . '</td></tr>';
}
$xls[] = '</table></body></html>';
$xls = join("\r\n", $xls);
header('Content-Disposition: attachment; filename="'.$name.'.xls"');
die(mb_convert_encoding($xls,'UTF-8','UTF-8'));
}
函数引用:
if(strval($_GET['download'])){
$orders = DB::LimitQuery('order', array(
'condition' => $condition,
'order' => 'ORDER BY id DESC',
));
if (!$orders) die('没有符合条件的记录');
$name = 'order_'.date('Ymd');
$kn = array( //excel表列名与数据字段的对应关系
'id' => '订单号',
'price' => '订单金额',
'card' => '代金券',
'create_time' => '下单时间',
'pay_time' => '付款时间',
);
foreach( $orders AS $one ){
$one['create_time'] =date("Y-m-d",$one['create_time']);
$one['pay_time']=date("Y-m-d",$one['pay_time']);
$eorders[] = $one;
}
down_xls($eorders, $kn, $name);
}
热心网友
时间:2022-04-06 08:25
主要是两种方法,两种方法一样的是【在浏览器上显示一个按钮】,这个按钮需要指向你用于处理【生成excel文件】的页面(比如是另一个php程序,或者用参数控制同一个php程序也可,但这样不可以用在第一种方法)
第一种方法,就是直接在处理excel文件的页面指定header,然后直接就下载了,但是这样做仅仅是将数据简单地逐行导出。示例代码如下:
<?php
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=test_data.xls");
$tx='表头';
echo $tx."\n\n";
//输出内容如下:
echo "姓名"."\t";
echo "年龄"."\t";
echo "学历"."\t";
echo "\n";
echo "张三"."\t";
echo "25"."\t";
echo "本科"."\t";
?>
第二种就是用一个叫做【phpexcel】的包。
这个包是已经写好的,在网上可以下载到,用这个包可以做出很好看的excel表格,比如字体、字体颜色、单元格背景色、单元格合并都可以做到。
这个就不是一两句能解释清楚的了,你可以参考这里:http://www.zeali.net/entry/556
而phpexcel的官网是这个:http://phpexcel.codeplex.com/