php生成excel文件?1、一设置浏览器Excel需要的Header 2、打开php://output流,并设置写入文件句柄。注:(php://output,是一个可写的输出流,允许程序像操作文件一样将输出写入到输出流中,那么,php生成excel文件?一起来了解一下吧。
ob_start();
header("");
header("Content-Type: application/vnd.ms-excel");
header("Expires:0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=文渗脊件名称世锋");
$row = $db -> ... ... # 这里可以进行数据库的操作搜喊晌,记住:ob_start();前不要有输出
?>
phpexcel类库代码如下:
require_once('PHPExcel.php');
require_once('PHPExcel/IOFactory.php');
$objPHPExcel=new PHPExcel();
$iofactory=new IOFactory();
//获得数据---一般是从数据库中获得数据
$data=array(
0=>array('id'=>高旅2013,'name'=>'张某某','age'=>21),
1=>array('id'=>201,'name'=>'EVA','age'=>21)
);
//设置excel列名
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1','编号');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B1','姓名');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C1','年龄');
//把数据循环写入excel中
foreach($data as $key => $value){
$key+=2;
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$key,$value['id']);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$key,$value['name']);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$key,$value['age']);
}
//excel保存在根目录下如要导出文件,以下改为注释代码
$objPHPExcel->getActiveSheet() -> setTitle('SetExcelName');
$objPHPExcel-> setActiveSheetIndex(0);
$objWriter = $iofactory -> createWriter($objPHPExcel, 'Excel2007');
$objWriter -> save('SetExcelName.xlsx');
//导出代码
// $objPHPExcel->getActiveSheet() -> setTitle('SetExcelName');
// $objPHPExcel-> setActiveSheetIndex(0);
//此念衡 $objWriter = $iofactory -> createWriter($objPHPExcel, 'Excel2007');
// $filename = 'SetExcelName.xlsx';
// header('Content-Type: application/vnd.ms-excel');
// header('Content-Type: application/octet-stream');
// header('Content-Disposition: attachment; filename="' . $filename . '"');
// header('Cache-Control: max-age=0'森做);
// $objWriter -> save('php://output');
?>
php导出xls乱码的解决办法:1、执行“iconv('utf-8", "gb2312", $filename)”方法对“$filename”转码;2、定义Excel的字符集为“charset=UTF-8”。
推荐:《PHP教程》
Php导出Excel文件乱码的解决
Php导出Excel文件时有两个主要的过程:
1、定义文件名
2、填充Excel数据
这两个过程中可能会出现一些乱码问题,下面我来说一下解决办法:
解决文件名的乱码:
乱码原因:客户使用的中文版Windows,而Windows的文件名编码为gb2312(gbk),而我消备纤们网页编码为了跟进现存潮流一般都采用utf-8(国际化)编码,这时当我们:header("Content-Disposition: inline; filename=/"" . $filename . ".xls/"")时就会出现乱码,假如你的网页编码就是gb2312那就不用考虑编码问题了。
解决办法:对$filename转码,执行拿仿:iconv('utf-8", "gb2312", $filename)。假如你的环境不支持iconv函数可以换别的函数,只要能将$filename的编码转为gbk就行。
对于任何一个网站肯定是少不了功能,常见的功能有图片、、Excel表格,如果文件比较小的话,那么不会遇到任何的问题,但是当文件信息而超明银过了PHP的最大内存,那么在这个时候它就会有的内存溢出的问题。
那么它们是因为什么而发生的?对于这个过程的原理才是埋碧我们应该真正要去弄明白的事情
大数据量的EXCEL文件为何要报错?
PHP在大Excel表格的时候,那么首先它是需要去把MySQL的数据从硬盘上面读取到内存,但读取它是一次性载入到我们的内存,如果说它一次性载入的数据量远远大于最大内存,然后再来执行浏览器的业务。那么这个时候它就会发生我们这个内存溢出。
就比如:说我们现在有100M的数据量,但是我们PHP内存最大只有64M,那么这个它肯定是装不了的,我们可以把那个内存比喻为一个水杯,这个水杯的容量比喻为内存,现在杯子最大容量为64L。你要存放100L。肯定放不下
大事化小,小事化了。拆分成段
从上面可以看到文件,它是分为两步,首先是载入内存然后执行浏览器的输出,那么既然大型文件一次性载入不了,那可以采用“大事化小,小事化了”思路,我们可以实现边写边,也激液宴就是分批次的读取与写入。
php导出大量数据到Excel,可以通过生成多个Excel文件,然后压缩成压缩包解决。
方案是:假如我们数据库有10w条数据,每2000条数据生成一个Excel文件,这样每次只要从数据库里查询出2000条数据即可,一定要分页去查询洞厅念。
原因:主要是数据库性能和写文件性能。分页查询可以解决数据库压力的问题, 生成多个文件可以解决单个文件太大,后期维护Excel文件的问题。
要注意的:
1. 在导出逻辑文件开头,一定要声明 set_time_limit(0) ,防止脚本超时;
2. 每个文件生成后,适当的sleep一下,让程序休息一下下;
3. 因为一次导出最后要将生成的多个Excel文件打包成一个压缩包,所以要删除掉生成的Excel文件,节省服务器存储空间;
下面纳困是我实际工作中,写的一个php导出大量数据到Excel的代伏悄码,你可以参考一下:
以上就是php生成excel文件的全部内容,php导出xls乱码的解决办法:1、执行“iconv('utf-8", "gb2312", $filename)”方法对“$filename”转码;2、定义Excel的字符集为“charset=UTF-8”。内容来源于互联网,信息真伪需自行辨别。如有侵权请联系删除。