您的位置:首页 > 编程语言 > PHP开发

PHP 中导出EXCEL,最原始方法,不用插件

2013-02-21 09:34 477 查看
前言:

PHP 中导出EXCEL 的需求很多,各式各样,PHP的EXCEL 插件也很多,最著名的就是phpexcel了。功能很少强大,导出定制化的EXCEL文档很简单,但是,有时候,比如我们不能使用插件(导出的东西很简单没必要使用,或者不能引入phpexcel插件)。下面开始。

都是利用head()函数来欺骗浏览器,导出EXCEL文件

第一种方法:使用函数head()和 fopen() 和 fputcsv() 来导出csv格式的文件,ecxel可以打开,而且不容易错位,或者打不开的情况,推荐这种

public function export_excel($file_name, $title, $data,title2='',$data2='' ) {

// 输出Excel文件头
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename = {$file_name}.csv");
header('Cache-Control: max-age=0');

// 打开PHP文件句柄,php://output 表示直接输出到浏览器
$fp = fopen('php://output', 'a');

// 输出Excel列名信息
foreach ($title as $i => $one) {
$head[$i] = iconv('utf-8', 'gbk', $one);
}
// 将数据通过fputcsv写到文件句柄
fputcsv($fp, $head);

// 输出Excel内容
foreach ($data as $one) {
$row = array();
foreach ($one as $j => $v) {
$row[$j] = iconv('utf-8', 'gbk', $v);
}
fputcsv($fp, $row);
}
//空格换行
fputcsv($fp, array(''));
fputcsv($fp, array(''));
fputcsv($fp, array(''));

//另一块数据
// 输出Excel列名信息
foreach ($title2 as $i => $one) {
$head[$i] = iconv('utf-8', 'gbk', $one);
}
// 将数据通过fputcsv写到文件句柄
fputcsv($fp, $head);

// 输出Excel内容
foreach ($data2 as $one) {
$row = array();
foreach ($one as $j => $v) {
$row[$j] = iconv('utf-8', 'gbk', $v);
}
fputcsv($fp, $row);
}

}


第二种方法:这种方法是直接输出,也还是欺骗浏览器,但是这种方法,当遇到一些字段很长时,excel可能打不开或者格式乱掉

public function export_excel($file_name, $title, $data, $title2 = '', $data2 = '') {

header("Content-Type: application/vnd.ms-execl;charset=UTF-8");
header("Content-Disposition: attachment;filename = {$file_name}.xls");
header("Pragma: no-cache");
header("Expires: 0");

foreach ($title as $one) {
echo mb_convert_encoding($one, "GB2312", "UTF-8") . "\t";
}
echo "\t\n";

foreach ($data as $one_info) {
foreach ($one_info as $one) {
echo mb_convert_encoding($one, "GB2312", "UTF-8") . "\t";
}
echo "\t\n";
}
echo "\t\n";
echo "\t\n";
echo "\t\n";
//输入另一块数据。
foreach ($title2 as $one) {
echo mb_convert_encoding($one, "GB2312", "UTF-8") . "\t";
}
echo "\t\n";

foreach ($data2 as $one_info) {
foreach ($one_info as $one) {
echo mb_convert_encoding($one, "GB2312", "UTF-8") . "\t";
}
echo "\t\n";
}
}


搞定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: