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

  • 相关阅读:
    24.最优布线问题(kruskal算法)
    24.最优布线问题(kruskal算法)
    Algs4-1.4.11为StaticSETofInts添加一个实列方法howMany()
    Algs4-1.4.9预测程序运行时间
    Algs4-1.4.10二分查找找出元素所在的最小索引
    Algs4-1.4.7统计算术运算与比较次数
    Algs4-1.4.8计算输入文件中相等的整数对的数量
    Algs4-1.4.6给出以下代码段的运行时间的增长数量级
    Algs4- 1.4.4参照表1.4.4为TwoSum建立一和类似的表格
    Algs4-1.4.2修改ThreeSum防止两个int值相加可能溢出
  • 原文地址:https://www.cnblogs.com/mianbaoshu/p/15392193.html
Copyright © 2020-2023  润新知