phpexcel 相关知识

时间:2021-10-11
本文章向大家介绍phpexcel 相关知识,主要包括phpexcel 相关知识使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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);       #设置单元格宽度

4.导出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); 后问题解决。

5.php7环境下使用PHPExcel导出表格报错:网页可能暂时无法连接,或者它已永久性地移动到了新网址

解决方法:

把 \PHPExcel\Calculation\Functions.php 第574行的break注释掉

6.PHPExcel报错:'break' not in the 'loop' or 'switch' context

ThinkPHP\Library\Vendor\phpexcel\PHPExcel\Calculation  LINE: 581

直接删除581行的 'break'即可!

7.PHPExcel exception: “Could not close zip file … ”报错

 报错原因: 

1.确认保存文件的目录是否存在,有没有写错。

2.权限问题。缺少对于保存的目录的写权限。

3.文件被其他应用程序占用。

4.保存的文件名如果有中文的话注意编码问题。

5.磁盘容量满了。

6.如果保存为xlsx的格式无法成功的话,可以尝试保存成xls格式。

原文地址:https://www.cnblogs.com/mianbaoshu/p/15392193.html