前言:
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"; } }