php 数据导出到excel文件,PHP导出数据到excel文件

本文介绍了一种非传统方式,利用自定义的pack、iconv函数来创建支持中文的Excel文件。通过封装函数并处理编码,作者展示了如何将数组的表头和数据转换为xls格式并下载。适合处理包含中文数据的表格输出。
摘要由CSDN通过智能技术生成

下面介绍一个很另类的php导出数据到xls文件的方法,用到的函数有pack,iconv

//上面三个自定义函数很重要,大家自行揣摩

function xlsBOF() {

echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);

}

function xlsEOF() {

echo pack("ss", 0x0A, 0x00);

}

function xlsWriteLabel($Row, $Col, $Value) {

$L = strlen($Value);

echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);

echo $Value;

}

//封装的方法,要看原博,请点击文章底部链接

function export(array $head, array $body)

{

// prepare headers information

header("Content-Type: application/force-download");

header("Content-Type: application/octet-stream");

header("Content-Type: application/download");

header("Content-Disposition: attachment; filename=\"export_".date("Y-m-d").".xls\"");

header("Content-Transfer-Encoding: binary");

header("Pragma: no-cache");

header("Expires: 0");

xlsBOF();

//因为我们的内容一般会有中文,所以表头和表内容都需要预先转码,不然会出现乱码

//此处用的是逗号分隔,如果内容中含有逗号就会出问题,大家可以换成其他分隔符,或者采用for循环的方式逐行进行转换

$head_str = iconv('utf-8', 'gbk', implode(',', $head));

$head_arr = explode(',', $head_str);

$head_count = count($head_arr);

for ($i = 0; $i < $head_count; $i++) {

xlsWriteLabel(0, $i, $head_arr[$i]);

}

//body

$body_count = count($body);

for ($i = 0; $i < $body_count; $i++) {

$value = $body[$i];

$value_str = iconv('utf-8', 'gbk',implode(',', $value));

$value_arr = explode(',', $value_str);

for ($j = 0; $j < $head_count; $j++) {

xlsWriteLabel($i + 1, $j, $value_arr[$j]);

}

}

xlsEOF();

}

//使用方法

$head = ['手机号', '姓名', '昵称'];

$body = [

[

'1378949440',

'张三',

'张三三'

],

[

'1399494900',

'李四',

'李四四'

]

];

export($head, $body);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值