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

来源:互联网 发布:中国数据研究中心 编辑:程序博客网 时间:2024/05/22 01:54

前言:

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";}}

搞定。


原创粉丝点击