1.phpexcel设置所有单元格为默认的水平垂直居中
$objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
2.phpexcel 设置excel单元格宽高
$objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(20); #设置单元格行高 $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20); #设置单元格宽度 $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); #设置单元格自适应宽度
3.导出excel文件后打不开,提示“文件格式或文件扩展名无效,请确定文件未损坏,并且文件扩展名与文件的格式匹配”
来自:https://www.cnblogs.com/imustun/p/9156851.html
原因:
1.发送header()头之前,不知道又啥特殊字符输出(可能是BOM,也可能是其他),导致php报错!然后将报错内容输出到了Excel
2.极大可能是:文件BOM头问题,生成的Excel文件头部添加了BOM头!
解决方案:
1.在输出Excel前,缓冲区中处理BOM头(可能是其他字符)
ob_end_clean();
ob_start();
在header()函数调用之前,清楚之前的错误输出!
参考:https://blog.csdn.net/liu857279611/article/details/51534450
- ob_get_contents() --- 返回输出缓冲区的内容
- ob_flush() --- 冲刷出(送出)输出缓冲区中的内容
- ob_clean() --- 清空(擦掉)输出缓冲区
- ob_end_flush() --- 冲刷出(送出)输出缓冲区内容并关闭缓冲
- ob_end_clean() --- 清空(擦除)缓冲区并关闭输出缓冲
- flush() --- 刷新输出缓冲
通常是ob_flush();flush()同时一起使用
使用ob_start()把输出那同输出到缓冲区,而不是到浏览器。然后用ob_get_contents得到缓冲区的数据。ob_start()在服务器打开一个缓冲区来保存所有的输出。所以在任何时候使用echo ,输出都将被加入缓冲区中,直到程序运行结束或者使用ob_flush()来结束。然后在服务器中缓冲区的内容才会发送到浏览器,由浏览器来解析显示。
函数ob_end_clean 会清除缓冲区的内容,并将缓冲区关闭,但不会输出内容。
此时得用一个函数ob_get_contents()在ob_end_clean()前面来获得缓冲区的内容。
这样的话, 能将在执行ob_end_clean()前把内容保存到一个变量中,然后在ob_end_clean()后面对这个变量做操作。
2.有人第一步过后,问题未解决。通过ob_get_contents()查看导出内容,并未发现BOM头。
再就是应用了框架,返回的静态页输出成了excel文件。
试了以上方法后,还是没有问题,最后查看导出的文件内容,意识到是跳转到静态页导致的。
加上 exit($contents); 后问题解决。
4.php 文件下载 出现下载文件内容乱码损坏的解决方法
参考:https://www.jb51.net/article/97441.htm
public function download(){ $upload=M('upload'); $data=$upload->find($_GET['id']); if(empty($data)){ header('HTTP/1.0 404 Not Found'); header('Location: .'); }else{ $path='./public/Uploads/'.$data['savename']; header("Content-Type:".$data['type']); header('Content-Disposition: attachment; filename="'.$data['name'].'"'); header('Content-Length:'.$data['size']); ob_clean(); flush(); readfile($path); } }
ob_clean();
flush();这个是关键。用了这两函数,图片正常打开,文字也不乱码。
5.php7环境下使用PHPExcel导出表格报错:网页可能暂时无法连接,或者它已永久性地移动到了新网址
解决方法:
把 PHPExcelCalculationFunctions.php 第574行的break注释掉
6.PHPExcel报错:'break' not in the 'loop' or 'switch' context
ThinkPHPLibraryVendorphpexcelPHPExcelCalculation LINE: 581
直接删除581行的 'break'即可!
7.PHPExcel exception: “Could not close zip file … ”报错
报错原因:
1.确认保存文件的目录是否存在,有没有写错。
2.权限问题。缺少对于保存的目录的写权限。
3.文件被其他应用程序占用。
4.保存的文件名如果有中文的话注意编码问题。
5.磁盘容量满了。
6.如果保存为xlsx的格式无法成功的话,可以尝试保存成xls格式。
8.Class 'ZipArchive' not found
1)查看php是否安装了zip拓展 php -m
2)安装zip模块 sudo apt-get install php7.0-zip (可以先查看php版本)