广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >使用php 实现生成Excel文件并导出
  • 177
分享到

使用php 实现生成Excel文件并导出

excelphp开发语言 2023-09-02 15:09:01 177人浏览 泡泡鱼
摘要

在现在的项目里,不管是电商项目还是别的项目,在管理端都会有导出的功能,比方说订单表导出,用户表导出,业绩表导出。这些都需要提前生成excel表,然后在导出,实际上是在代码里生成一张excel表,然后通

在现在的项目里,不管是电商项目还是别的项目,在管理端都会有导出的功能,比方说订单表导出,用户表导出,业绩表导出。这些都需要提前生成excel表,然后在导出,实际上是在代码里生成一张excel表,然后通过下载api进行导出的。好了 先给大家讲一下示例
利用PHP导出excel我们大多会直接生成.xls文件,这种方便快捷。
首先我们先在项目中引入几个类

use \phpOffice\PhpSpreadsheet\Spreadsheet;use \PhpOffice\PhpSpreadsheet\ioFactory;use \PhpOffice\PhpSpreadsheet\Cell\Coordinate;use PhpOffice\PhpSpreadsheet\Style\Border;use PhpOffice\PhpSpreadsheet\Style\Alignment;

然后我们在进行封装一个生成并导出excel表的方法,这里我们用订单表做示例

//订单信息导出excel    public function order_outputProjectExcel($info){        $newExcel = new Spreadsheet();//创建一个新的excel文档        $objsheet = $newExcel->getActiveSheet();//获取当前操作sheet的对象        $date = date('Ymd',time());        $name = '订单信息表';        $objSheet->setTitle($name);//设置当前sheet的标题         //样式设置 - 合并和拆分        $objSheet->mergeCells('A1:P1'); //合并单元格        //$sheet -> unmergeCells('C3:G3'); //拆分单元格        $objSheet->setCellValue('A1',$name);         //设置第一栏的中文标题        $objSheet->setCellValue('A2', '编号')            ->setCellValue('B2', '商品图片')            ->setCellValue('C2', '商品名称')            ->setCellValue('D2', '会员编号')            ->setCellValue('E2', '直属')            ->setCellValue('F2', '非直属')            ->setCellValue('G2', '订单号')            ->setCellValue('H2', '商品单价')            ->setCellValue('I2', '实付金额')            ->setCellValue('J2', '商品佣金')            ->setCellValue('K2', '会员佣金')            ->setCellValue('L2', '直属佣金')            ->setCellValue('M2', '非直属佣金')            ->setCellValue('N2', '支付时间')            ->setCellValue('O2', '支付渠道')            ->setCellValue('P2', '订单状态');         //写入数据        $dataCount = count($info);        $k = 2;                if($dataCount == 0){            exit;        }else{            for ($i=0;$i<$dataCount;$i++){                $k = $k + 1;                $order=$i+1;                $objSheet->setCellValue('A' . $k, $info[$i]['id'])                    ->setCellValue('B' . $k, $info[$i]['Goods_image'])                    ->setCellValue('C' . $k, $info[$i]['goods_name'])                    ->setCellValue('D' . $k, $info[$i]['user_num'])                    ->setCellValue('E' . $k, $info[$i]['user_upteam'])                    ->setCellValue('F' . $k, $info[$i]['user_un_upteam'])                    ->setCellValue('G' . $k, $info[$i]['order_id'])                    ->setCellValue('H' . $k, $info[$i]['goods_price'])                    ->setCellValue('I' . $k, $info[$i]['payment'])                    ->setCellValue('J' . $k, $info[$i]['goods_yongjin'])                    ->setCellValue('K' . $k, $info[$i]['user_yongjin'])                    ->setCellValue('L' . $k, $info[$i]['user_up_yongjin'])                    ->setCellValue('M' . $k, $info[$i]['user_un_upyongjin'])                    ->setCellValue('N' . $k, $info[$i]['paymenttime'])                    ->setCellValue('O' . $k, $info[$i]['pay_way_ch'])                    ->setCellValue('P' . $k, $info[$i]['status_ch']);            }        }         //设定样式        //所有sheet的表头样式 加粗        $font = [            'font' => [                'bold' => true,                'size' => 14,            ],        ];        $objSheet->getStyle('A1:P1')->applyFromArray($font);         //样式设置 - 水平、垂直居中        $styleArray = [            'alignment' => [                'horizontal' => Alignment::HORIZONTAL_CENTER,                'vertical' => Alignment::VERTICAL_CENTER            ],        ];        $objSheet->getStyle('A1:P2')->applyFromArray($styleArray);         //所有sheet的内容样式-加黑色边框        $borders = [            'borders' => [                'outline' => [                    'borderStyle' => Border::BORDER_THIN,                    'color' => ['argb' => '000000'],                ],                'inside' => [                    'borderStyle' => Border::BORDER_THIN,                ]            ],        ];        $objSheet->getStyle('A1:P'.$k)->applyFromArray($borders);         //设置宽度        $cell = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'];        foreach($cell as $k=>$v){            $objSheet->getColumnDimension($v)->setWidth(20); //            $objSheet->getColumnDimension($v)->setAutoSize(true);        }         $this->downloadExcel($newExcel,$name,'Xlsx');    }                    //下载private function downloadExcel($newExcel,$filename,$fORMat){    ob_end_clean();        ob_start();// $format只能为 Xlsx 或 Xls        if ($format == 'Xlsx') {            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');        } elseif ($format == 'Xls') {            header('Content-Type: application/vnd.ms-excel');        }//  strtolower($format)        header("Content-Disposition: attachment;filename="            . $filename . '.' . strtolower($format));        header('Cache-Control: max-age=0');        $objWriter = IOFactory::createWriter($newExcel, $format);        $objWriter->save('php://output');        //通过php保存在本地的时候需要用到        // $objWriter->save($dir.'/demo.xlsx');         //以下为需要用到IE时候设置        // If you're serving to IE 9, then the following may be needed        //header('Cache-Control: max-age=1');        // If you're serving to IE over SSL, then the following may be needed        //header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past        //header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified        //header('Cache-Control: cache, must-revalidate'); // Http/1.1        //header('Pragma: public'); // HTTP/1.0        exit;}

到这一步其实就已经成功了95%了。剩下的5%只需要你调用上面的方法传入正确的参数即可

model('Apimodel')->order_outputProjectExcel($info);

这里的$info是你的订单详情。必须要做时间筛选,如果不做时间筛选的话 数据量一多,你的系统会崩的。
这里的for循环就是你传入的 $info。 如果说你的 $info 是空的 那么导出的excel打开的时候还会出现

for ($i=0;$i<$dataCount;$i++){    $k = $k + 1;    $order=$i+1;    $objSheet->setCellValue('A' . $k, $info[$i]['id'])        ->setCellValue('B' . $k, $info[$i]['goods_image'])        ->setCellValue('C' . $k, $info[$i]['goods_name'])        ->setCellValue('D' . $k, $info[$i]['user_num'])        ->setCellValue('E' . $k, $info[$i]['user_upteam'])        ->setCellValue('F' . $k, $info[$i]['user_un_upteam'])        ->setCellValue('G' . $k, $info[$i]['order_id'])        ->setCellValue('H' . $k, $info[$i]['goods_price'])        ->setCellValue('I' . $k, $info[$i]['payment'])        ->setCellValue('J' . $k, $info[$i]['goods_yongjin'])        ->setCellValue('K' . $k, $info[$i]['user_yongjin'])        ->setCellValue('L' . $k, $info[$i]['user_up_yongjin'])        ->setCellValue('M' . $k, $info[$i]['user_un_upyongjin'])        ->setCellValue('N' . $k, $info[$i]['paymenttime'])        ->setCellValue('O' . $k, $info[$i]['pay_way_ch'])        ->setCellValue('P' . $k, $info[$i]['status_ch']);  }

最后就是这样的效果
在这里插入图片描述不懂的可以留言。。。

来源地址:https://blog.csdn.net/weixin_47736740/article/details/127802751

--结束END--

本文标题: 使用php 实现生成Excel文件并导出

本文链接: https://www.lsjlt.com/news/390986.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用php 实现生成Excel文件并导出
    在现在的项目里,不管是电商项目还是别的项目,在管理端都会有导出的功能,比方说订单表导出,用户表导出,业绩表导出。这些都需要提前生成excel表,然后在导出,实际上是在代码里生成一张excel表,然后通...
    99+
    2023-09-02
    excel php 开发语言
  • PHP实现生成Excel文件并导出的示例详解
    在现在的项目里,不管是电商项目还是别的项目,在管理端都会有导出的功能,比方说订单表导出,用户表导出,业绩表导出。这些都需要提前生成excel表,然后在导出,实际上是在代码里生成一张e...
    99+
    2023-01-11
    PHP生成Excel PHP导出Excel PHP Excel
  • PhpSpreadsheet 基本使用和导入 导出 模版生成Excel文件
    一. 基本使用 ...
    99+
    2023-09-08
    excel PhpSpreadsheet php
  • PHP使用PhpSpreadsheet 导出excel文件
            PhpSpreadsheet 是使用PHP语言编写的用户操作excel的类库,提供了一系列丰富的接口,可很方便的对文档属性、单元格进行操作,包括设置样式、图片、日期、函数等等。 PhpSpreadsheet用方法也很简单,示...
    99+
    2023-10-25
    excel php
  • JavaHutool工具实现验证码生成及Excel文件的导入和导出
    目录1、Hutool工具简介2、Hutool的相关依赖3、验证码工具4、excel工具1、Hutool工具简介 HuTool工具(糊涂工具),第三方插件工具,简化操作,是国产的一个产...
    99+
    2022-11-12
  • 如何使用PHP原生来导出Excel和CSV文件
    这篇文章主要介绍“如何使用PHP原生来导出Excel和CSV文件”,在日常操作中,相信很多人在如何使用PHP原生来导出Excel和CSV文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用PHP原生来导...
    99+
    2023-06-20
  • React实现导入导出Excel文件
    目录表示层 业务层 核心插件xlsx excel 导入 excel 导出 excel 导出插件(js-export-excel) 实现效果结语 表示层 这里我是使用的是antd的U...
    99+
    2022-11-12
  • JavaScript实现excel文件导入导出
    目录一、需求场景描述1.此时前端上传解析excel文件可能更合适2.此时前端下载excel文件可能优雅一些二、实现思路分析1.导入excel文件实现思路分析2.导出excel文件实现...
    99+
    2022-11-13
  • 使用apache poi怎么实现导出excel文件
    使用apache poi怎么实现导出excel文件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。代码如下:package com.icourt.util;import org....
    99+
    2023-05-31
    apachepoi excel
  • 怎么用Java Hutool工具实现验证码生成及Excel文件的导入和导出
    这篇文章主要介绍“怎么用Java Hutool工具实现验证码生成及Excel文件的导入和导出”,在日常操作中,相信很多人在怎么用Java Hutool工具实现验证码生成及Excel文件的导入和导出问题上存在疑惑,小编查阅...
    99+
    2023-06-21
  • EasyExcel实现Excel文件导入导出功能
    一、EasyExcel简介 Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的fu...
    99+
    2023-09-15
    excel java Powered by 金山文档
  • React怎么实现导入导出Excel文件
    这篇文章主要介绍“React怎么实现导入导出Excel文件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“React怎么实现导入导出Excel文件”文章能帮助大家解决问题。表示层这里我是使用的是ant...
    99+
    2023-06-05
  • 使用java如何实现大量导出excel文件
    使用java如何实现大量导出excel文件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。传统的导出方式会消耗大量的内存,2003每个sheet页最多65536条数据,2007每...
    99+
    2023-05-31
    java 文件导出 excel
  • Java中怎么操作Jxl实现导出数据生成Excel表格数据文件
    这篇文章主要讲解了“Java中怎么操作Jxl实现导出数据生成Excel表格数据文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中怎么操作Jxl实现...
    99+
    2022-10-19
  • 如何使用java导出Excel文件
    如何使用java导出Excel文件?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。java导出Excel通用方法的实例详解Java导出Excel通用方法,只需要一...
    99+
    2023-05-31
    java excel ava
  • JS实现读取Excel文件内容并生成二维码
    目录需求实现方案puppeteernode-canvas浏览器问题分解具体实现启动一个本地服务器创建html,引入资源库解析xls文件写入中间logo写入底部文字canvas转化为图...
    99+
    2022-11-13
  • JS实现导出Excel和CSV文件操作
    一、js导出Excel <html> <head> </head> <body> <script type="text/j...
    99+
    2022-11-13
  • JS怎么实现导出Excel和CSV文件
    这篇文章主要介绍了JS怎么实现导出Excel和CSV文件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JS怎么实现导出Excel和CSV文件文章都会有所收获,下面我们一起来看看吧。一、js导出Excel<...
    99+
    2023-06-30
  • Java树形结构数据生成导出excel文件方法记录
    目录什么是树形结构数据 效果用法源码总结什么是树形结构数据 效果 用法 String jsonStr = "{\"name\":\"aaa\",\"children\":[...
    99+
    2022-11-12
  • 在Java Web中Excel文件如何使用POI实现导出
    在Java Web中Excel文件如何使用POI实现导出?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。采用Spring mvc架构:Controller层代码如下@Cont...
    99+
    2023-05-31
    java web poi
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作