PHPExcel导出

2023-10-30

PHPExcel导出

PHPExcel导出之前只做过简单的,这一次这个有些复杂的,包括单元格合并、字体的样式、边框线、单元格的背景色、单元格内容的自动换行。

代码呈上

		//引入PHPExcel
        import("Org.Util.PHPExcel");
        import("Org.Util.PHPExcel.Writer.Excel5");
        import("Org.Util.PHPExcel.IOFactory");
        
        // 设置PHPExcel对象
        $objPHPExcel = new \PHPExcel();
        $objProps = $objPHPExcel->getProperties();

        // 设置文档属性
          $objPHPExcel->getProperties()->setCreator("qingdan")
          ->setLastModifiedBy("qingdan")
          ->setTitle("Office 2007 XLSX Test Document")
          ->setSubject("Office 2007 XLSX Test Document")
          ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
          ->setKeywords("office 2007 openxml php")
          ->setCategory("Test result file");

        //生成列名,A-Z  AA-AZ  BA-BZ  CA-CT
        $col_arr=range("A","Z");

        // 设置行高度
        $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(25);
        $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(35);    //第二行行高

        //设置单元格宽度
        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15);
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(25);
        $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);
        $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10);
        $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15);
        $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(15);
        $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(15);
        $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(15);
        $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(15);
        $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(15);
        $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(15);
        $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(15);

        // 合并
        $objPHPExcel->getActiveSheet()->mergeCells('A1:L1');
        $objPHPExcel->getActiveSheet()->mergeCells('A4:B4');
        $objPHPExcel->getActiveSheet()->mergeCells('C4:D4');
        $objPHPExcel->getActiveSheet()->mergeCells('E4:F4');
        $objPHPExcel->getActiveSheet()->mergeCells('H4:L4');
        $objPHPExcel->getActiveSheet()->mergeCells('B3:L3');
        $objPHPExcel->getActiveSheet()->mergeCells('D2:F2');
        $objPHPExcel->getActiveSheet()->mergeCells('H2:L2');
        //合计
        $count1 = $count + 1;
        $objPHPExcel->getActiveSheet()->mergeCells("A$count1:B$count1");
        //页脚
        $foot1 = $count1+1;
        $foot3 = $count1+3;
        $objPHPExcel->getActiveSheet()->mergeCells("A$foot1:L$foot3");

        //默认居中
        $objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

        // 字体和样式
        $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(24);      //字体大小
        $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('A2')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('C2')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('G2')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('A3')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('A4')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('G4')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('A5')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('B5')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('C5')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('D5')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('E5')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('F5')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('G5')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('H5')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('I5')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('J5')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('K5')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('L5')->getFont()->setBold(true);

        //边框线
        $styleThinBlackBorderOutline = array(
            'borders' => array (
                'allborders' => array (                               //allborders  表示全部线框
                    'style' => \PHPExcel_Style_Border::BORDER_THIN,   //设置border样式
                    'color' => array ('argb' => 'FF000000'),          //设置border颜色
                ),
            ),
        );

        $objPHPExcel->getActiveSheet()->getStyle( "A1:L"."$foot3")->applyFromArray($styleThinBlackBorderOutline);

        //设置填充的样式和背景色
        $objPHPExcel->getActiveSheet()->getStyle( 'A2:L4')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
        $objPHPExcel->getActiveSheet()->getStyle( 'A2:L4')->getFill()->getStartColor()->setARGB('0092D050');

         $key = 0;
         foreach($col_arr as $v){
            //注意,不能少了。将列数字转换为字母\
            $colum = \PHPExcel_Cell::stringFromColumnIndex($key);
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("A1",'*******************');

            /*表头及列出信息*/
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("A2",'订单编号');
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("C2",'配送时间');
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("G2",'订购食堂');
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("A3",'收货地址');
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("A4",'下单人员及联系方式');
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("G4",'配送单位');
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("A5",'品类编码');
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("B5",'菜品');
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("C5",'规格');
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("D5",'单位');
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("E5",'加工要求');
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("F5",'订购数');
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("G5",'配送数');
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("H5",'签收数');
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("I5",'单价');                                      $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("J5",'装箱单位');
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("K5",'金额/元');
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("L5",'装箱数');
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("A$count1",'合计');

            //页脚内容
             $str = "送货人:                      验收人:                         核对人:                       结算部门(章):  ". chr(10) . chr(10) ."备 注:    ". chr(10) . chr(10) ."第一联:******             第二联:******              第三联:******             第四联:*********       ";

            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("A$foot1",$str);
            //设置单元格自动换行属性
             $objPHPExcel->getActiveSheet()->getStyle("A$foot1")->getAlignment()->setWrapText(true);
            //左对齐
             $objPHPExcel->getActiveSheet()->getStyle("A$foot1")->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);
             $objPHPExcel->getActiveSheet()->getStyle("A$foot1")->getFont()->setSize(10);      //字体大小
             $objPHPExcel->getActiveSheet()->getStyle("A$foot1")->getFont()->setBold(true);      //字体加粗
            //表头信息
             $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("B2"," "."******");   //订单号
             $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("D2","******");   //订单配送时间
             $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("H2","******");   //订购的食堂
             $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("H4","******");   //配送单位
             $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("B3","******");   //收货地址
             $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("C4","******");   //下单人员
             $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("E4","******");   //联系方式
            $key += 1;
            }

                $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(false);

                //赋值
            $column = 6; //从第六行写入数据 第五行之前是表头
            $objActSheet = $objPHPExcel->getActiveSheet();
            foreach($order_datas as $key => $rows){ //行写入
                $span = ord("A");
                foreach ($rows as $keyName => $value) {
                    $j = chr($span);
                    if ($keyName != 'order_id_list') {
                        $objActSheet->setCellValue($j .''. $column, "\t".$value);
                        $span++;
                    } else {
                        $objActSheet->setCellValue($j .''.$column, "\t".$value);
                        $span++;
                    }
                }
                $column++;
            }

            $fileName = iconv("utf-8", "gb2312", $fileName);
            $objPHPExcel->setActiveSheetIndex(0);
            ob_end_clean();
            header('Content-Type: application/vnd.ms-excel');
            header("Content-Disposition: attachment;filename=\"$fileName\"");
            header('Cache-Control: max-age=0');
            $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
            $objWriter->save('php://output');
            exit;

长数字前要拼个空格让其成为字符串,否则会用科学计数法表示。

效果图
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHPExcel导出 的相关文章

  • 将两个或多个 xls 文件合并为工作表 PHPExcel

    我一直在到处寻找如何使用两个现有文件执行此操作 看起来所有文档都是关于创建新文件的 我想获取其中一个文件并将第二个文件作为新工作表添加到其中 然后将其保存到服务器 我一直在尝试这样的做法 但没有成功 file test xls file2
  • phpexcel下载

    你好 我是 phpexcel 的新手 我想知道是否有某种方法将我创建的 Excel 发送给客户端下载而不将其保存在我的服务器上或在他下载后立即将其删除 我正在尝试在页面上创建一个 导出按钮 该按钮将为用户提供一个 弹出窗口 其中包含他想要我
  • 在浏览器中显示 Excel 文件。 PHPExcel

    例如我正在使用这样的代码
  • 将 PHPExcel 与 Composer 和 Symfony2.2 结合使用

    我在SO上找到了这个 如何在 Symfony 2 中正确使用 PHPExcel 这可行 但我想与作曲家一起使用它 我已经解决的第一部分 为特殊标签加载 PHPExcel 最后一个稳定版本 我不知道如何使用以下语法获取标签 repositor
  • CodeIgniter 与 PHPExcel 致命错误无法重新声明类 IOFactory

    我正在尝试将 PHPExcel 与 CodeIgniter 一起使用 我的问题是当我想使用下面的方法时 我得到了PHP 致命错误 无法重新声明类 IOFactory 如果您不确定文件类型 则可以在使用 createReader 方法实例化读
  • PHPExcel 验证一系列单元格的数据

    我正在尝试验证一系列单元格的数据PHPExcel 验证单个细胞是否有效 objValidation objPHPExcel gt getActiveSheet gt getCell A1 gt getDataValidation objVa
  • PHPExcel 从 url 导入文件

    我想使用 phpexcel 从网站导入 tsv 文件 使用区域设置文件可以正常工作 但是如果我更改 http 上的文件位置 则无法工作 inputFileType CSV data http www domain com file tsv
  • PHPEXCEL如何获取单元格值,即使有特殊字符

    当我使用函数 getValue 获取单元格值时 如果单元格包含特殊字符 它会返回 false 是否有任何解决方案来获取内容 即使包含非 UTF 8 字符 我希望在调用 getValue 函数之前解析它们 我将不胜感激任何形式的帮助 objP
  • PHPExcel 异常:“无法关闭 zip 文件...”

    我使用 XAMPP Mac 进行本地开发 但我在工作中使用了这段代码 使用 Windows 和其他相同的开发环境 并且它工作得很好 objPHPExcel new PHPExcel sheet objPHPExcel gt createSh
  • Excel 工作表在条件格式后损坏

    我正在使用 phpexcel 生成 Excel 工作表 当使用条件格式 搜索文本或其一部分 时 在尝试打开生成的工作表时收到验证错误 与数字完美配合 与文本配合则较差 这是我的代码 conditional formatting objCon
  • 如何在 PHPExcel 中转换 HTML 字符?

    使用 PHPExcel 开发动态生成 Excel 文档的 PHP 应用程序 http phpexcel codeplex com http phpexcel codeplex com 我遇到的问题是我的 Excel 文档将包含一些特殊的 H
  • “文件名 062014.xlsx 未被识别为 OLE 文件”

    我正在开发一个处理 Excel 的复杂程序 因此我使用 PHPExcel 从浏览器搜索和编辑 Excel 文件 我的问题出在程序的编辑部分 所以我编写了一个基本程序来编辑现有的 Excel 页面 PHPExcel 似乎无法将 Excel 中
  • PHPExcel 在 AWS 上运行代码时写入垃圾字符。

    我面临 PHPExcel excel 下载代码的问题 下载代码在一台服务器 netcore 服务器 上运行 但同一组代码在 AWS 服务器上不起作用 任何人都可以帮助我找出确切的问题是什么 以下是phpexcel下载代码 error rep
  • 在 phpoffice/phpword 上添加图表

    我知道如何在 PHPExcel 上添加图表 但我还需要在 docx 文件上插入图表 是否可以使用 phpoffice phpword 操作图表 如果不可能 您知道适合这项工作的好库吗 实际上不可能在 PHPWord 文档中添加图表 但该功能
  • PHPExcel 所需日期 dd/MM/yy

    我正在使用 PHPExcel Lib 下载 Excel 工作表 并且在下载的 Excel 工作表中需要列日期格式 如 25 May 17 而不是 25 05 17 我能够添加数字格式 25 05 17 但不像 25 May 17 下面是我的
  • PHPExcel $objWriter->save() 失败

    我正在使用 PHPExcel 根据数据库中的记录创建一个 Excel 文件 在大型数据集上生成它时遇到一个奇怪的问题 我已将其范围缩小到一个引起问题的行 objWriter gt save php output 它只是输出一个空白文件而不是
  • phpexcel在单元格范围上设置数据类型

    With PHPExcel http phpexcel codeplex com 我在用着 workSheet gt fromArray array 设置我的数据 但是 需要将一列设置为字符串 带有前导零的数字 如果不设置为字符串 前导零将
  • 在 PHPExcel 中复制样式和数据

    我想将某个范围的所有数据和样式复制到其他单元格 例如我想从 A4 I15 复制 然后完全粘贴我想要从 A16 复制的内容和样式 我该怎么做 这就是我要复制的内容 我知道只复制数据而不复制样式 并使用以下代码执行此操作 cellValues
  • php_zip 在 php 5.3.5 中不存在

    我正在使用 PHPExcel 要求之一是我需要启用 php zip 如果您需要 PHPExcel 来处理 xlsx 或 ods 文件 您将需要 邮政编码扩展名 我正在使用 PHP v5 3 5 并在我的php ini文件中 我有以下几行 e
  • PHPExcel输出乱码

    我正在尝试 PHPExcel 附带的简单示例 01simple xls 我得到乱码输出 它 LibreOffice 想要导入文件 它认为字符集是西欧 DOS OS2 861 icelandic 输出是这样的

随机推荐

  • 《Linux运维实战:Centos7.6一键离线部署mysql5.7.29集群》

    文章目录 一 部署背景 三 部署工具 三 部署演示 总结 整理不易 如果对你有帮助 可否点赞关注一下 一 部署背景 由于业务系统的特殊性 我们需要面向不通的客户安装我们的业务系统 而作为基础组件中的mysql针对不同的客户环境需要多次部署
  • Android 多选按钮Button

    一 先上效果图 二 准备阶段 资源文件 可根据项目需要调整样式 大小和颜色等 在res文件夹下创建以下资源文件 根据根标签选择Root Element 1 bg btn no select xml
  • 【数据对比】Parasoft Jtest如何提高Java测试ROI,加速软件交付!

    Parasoft Jtest通过提供一套工具来加速Java软件开发 以保证您的软件可靠 安全和可维护 从而最大限度地提高质量并最大限度地降低业务风险 经广泛证明 Parasoft Jtest是一个可以提高开发团队生产力和软件质量方法的集成解
  • 使用jvisualvm的jstatd方式远程监控Java程序

    使用Java自带的jvisualvm调试Java程序 可以查看CPU 内存 类及线程等信息 还可以进行Dump 无疑是一个利器 由于客户端是Windows 服务端是Linux 并且是最小安装的Linux 没有图形界面 因此需要进行远程调试
  • vue循环如何动态加载本地图片

    显示效果 代码 html
  • Excel中利用OFFSET函数解决很多个分块的一次性转置问题(非纯手动)

    今天遇到一个问题 需要将Excel中的一门课的平时成绩根据每个同学的作业次数进行转置排列 原始EXCEL表中内容如下 上表每个同学对应一个学号 该学号同学的作业和分数相应已知 现在为了统计方便 我要得到如下表的效果 因为学生人数众多 所有不
  • 【100%通过率 】【华为OD机试c++/java

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 祖国西北部有一片大片荒地 其中零星的分布着一些湖泊 保护区 矿区 整体上常年光照良好 但是也有一些地区光照不太好 某电力公司希望在这里建设多个光
  • Qt动态库调用

    在开发过程中调用第三方的动态库应该是不可避免的 调用DLL的方式也不算少 可以通过Win32 API 直接调用 Qt的API等诸多方式进行调用 这里着重介绍一下Qt自带的API调用DLL的方法 以调用DLLTest dll中返回值为bool
  • phpstorm的一些方便开发的操作

    1 php的xdebug插件 方便调试 1 1首先要确定自己的php版本 通过phpinfo 来查看 在页面上查看phpinfo的信息 复制其源码页面的所有信息 1 2 到https xdebug org 获取插件 1 3点击以下链接进行p
  • *.ui界面文件对应的ui_*.h文件的作用

    研究 ui界面文件对应的ui h文件的作用 ui h 是在对 ui 文件编译后生成的一个文件 ui h 会出现在编译后的目录下 或与 ui 同目录 与项目的 shadow build 编译设置有关 查看 ui h 文件的内容 发现它主要做了
  • selenium报错解决

    selenium报错解决 报错原因如下 selenium common exceptions ElementNotvisibleException Message element not interactable session info
  • C-const与指针

    const int p 不可以对 p 再次进行赋值 但可以对p进行再次赋值 p 6 p int const p 不可以对p再次进行操作 但可以对 p 再次进行操作 p 6 p const int const p 既不可以对p再次进行操作 也
  • 面试八股文(c++)

    C 1 多态 虚函数 纯虚函数的作用 多态 一个东西有多种形式 不同的对象 在收到相同的信息时产生不同的行为 好处 1 应用程序不必为每个派生类编写功能调用 只需要对抽象基类进行处理即可 大大提高程序的可复用性 2 派生类的功能可以被基类的
  • ip 地址与mac 地址的理解。软件如何识别用户?如何欺骗软件?修改mac地址的方法。windows 10文件夹权限问题!

    当你看到这篇文章的题目时 也许会想 究竟其围绕的主题是什么 答案是 我也不知道 某些时候无题杂谈也许更符合现实意义 在我胡说八道之前请再允许我说一些废话哈 不想看的时候可以略过的 之前了解 TeamViewer 的破解工具 结果没有通过审核
  • 【北交所周报】北证指数周内涨幅一度超7%,刷新历史单日涨幅;力王股份上市首日涨超100%;北交所现开市以来首个自然人“举牌”...

    上周 9月4日 9月8日 北交所个股整体走强 六成个股上涨 北证指数上涨1 81 最高触及863 63点 最低报811 06点 9月8日收盘报817 02点 ITValue 上周 9月4日 9月8日 北证指数上涨1 81 最高触及863 6
  • 【java】Static解读和public static void main(String[] args)详细分析

    首先问一个问题 public static void main String args 代码代表了什么含义 以及思考为什么java程序一开始就会进入main 函数 其实c c 也是如此 后面一个问题有static的基础就非常容易 后一个问题
  • Silverlight 1.1正式更名为Silverlight 2.0

    2007年11月30日 10 18 24 详情请参看下面两篇Blog http weblogs asp net scottgu archive 2007 11 29 net web product roadmap asp net silve
  • vscode快速生成标准的html代码

    Vsocde中 再新建html页面时 可以输入html 5然后按Tab或回车即可生成html模板 html 5
  • html5 webgl pyhon,WebGL基础

    WebGL坐标系 就像任何其他的3D系统 在WebGL中Z轴表示深x y和z轴 在WebGL的坐标被限制为 1 1 1 和 1 1 1 它意味着 如果你考虑该屏幕上投影的WebGL图形为立方体 则立方体的一个角将是 1 1 1 和相对的角为
  • PHPExcel导出

    PHPExcel导出 PHPExcel导出之前只做过简单的 这一次这个有些复杂的 包括单元格合并 字体的样式 边框线 单元格的背景色 单元格内容的自动换行 代码呈上 引入PHPExcel import Org Util PHPExcel i