mysql数据导出为excel表 php_PHP将mysql数据库导出为excel表

利用php导出mysql数据库为excel表格的方法很多,最简单的就直接使用php fputcsv函数了,还有就是直接输入csv格式也是可以了,要生成excel标准格式我们需使用第三方插件了.

方法一,利用fputcsv,代码如下:// 输出Excel文件头,可把user.csv换成你要的文件名

header('Content-Type: application/vnd.ms-excel');

header('Content-Disposition: attachment;filename="user.csv"');

header('Cache-Control: max-age=0');

// 从数据库中获取数据,为了节省内存,不要把数据一次性读到内存,从句柄中一行一行读即可

$sql = 'select * from tbl where ……';

$stmt = $db->query($sql);

// 打开PHP文件句柄,php://output 表示直接输出到浏览器

$fp = fopen('php://output', 'a');

// 输出Excel列名信息

$head = array('姓名', '性别', '年龄', 'Email', '电话', '……');

foreach ($head as $i => $v) {

// CSV的Excel支持GBK编码,一定要转换,否则乱码

$head[$i] = iconv('utf-8', 'gbk', $v);

}

// 将数据通过fputcsv写到文件句柄

fputcsv($fp, $head);

// 计数器

$cnt = 0;

// 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小

$limit = 100000;

// 逐行取出数据,不浪费内存

while ($row = $stmt->fetch(Zend_Db::FETCH_NUM)) {

//开源代码phprm.com

$cnt ++;

if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题

ob_flush();

flush();

$cnt = 0;

}

foreach ($row as $i => $v) {

$row[$i] = iconv('utf-8', 'gbk', $v);

}

fputcsv($fp, $row);

}

方法二,直接在浏览器用header输出csv格式的数据,代码如下:例3, 第二个差不多了, 代码如下://搜索

$start_time = strtotime($start_date);

$end_time = strtotime($end_date);

$sql = "select a.*,b.order_amount,b.money_paid from " . $ecs->table('invoice') . " as a " . " left join " . $ecs->table('order_info') . " as b on a.order_id=b.order_s\n" . " where a.add_time >=" . $start_time . " and a.add_time <=" . $end_time . " ";

$temp_list = $db->getAll($sql);

if ($temp_list) { //有数据

$Html = '' . chr(13) . chr(10);

$Html.= '时间:

' . $start_date . '~' . $end_date . '

编号

发票类型

发票抬头

发票内容

订单号

金额

添加日期

收件人

联系方式

地址';

//取得符合条件的数组

for ($i = 0; $i < count($temp_list); $i++) {

$temp_i = $i + 1;

if ($temp_list[$i][order_amount] == 0) {

$temp_money = $temp_list[$i][money_paid];

} else {

$temp_money = $temp_list[$i][order_amount];

}

$temp_time = date('Y-m-d', $temp_list[$i]['add_time']);

$Html.= '

' . $temp_i . '

' . $temp_list[$i][type_name] . '

' . $temp_list[$i][top] . '

' . $temp_list[$i][content] . '

' . $temp_list[$i][order_id] . '

' . $temp_money . '

' . $temp_time . '

' . $temp_list[$i][user_name] . '

' . $temp_list[$i][mobile] . ' ' . $temp_list[$i][tel] . '

' . $temp_list[$i][address] . '';

}

$Html.= '';

$Html.= '';

$mime_type = 'application/vnd.ms-excel';

header('Content-Type: ' . $mime_type);

header('Content-Disposition: attachment; filename="invoice.xls"');

header('Cache-Control: must-revalidate, post-check=0, pre-check=0');

header('Pragma: public');

echo $Html;

有时excel会自动把数字转换格式, 于是有些手机号码, 身份证之类的就乱了, 因此可以在导出时, 先定义好如下代码: < tdalign = "center"nowrap = "nowrap"style = "vnd.ms-excel.numberformat:@" > '.$temp_list[$i][order_id].' < / td >

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值