thinkPHP+phpexcel实现excel报表输出功能示例

下面我将给您详细讲解“thinkPHP+phpexcel实现excel报表输出功能示例”的完整攻略,过程中将包含两条示例说明。

1. 简介

1.1 ThinkPHP

ThinkPHP 是一个免费开源的、快速、简单的面向对象的轻量级PHP开发框架。他能够快速的建立一个高性能的网站应用程序。

1.2 PHPExcel

PHPExcel 是一个强大、开放、免费、跨平台的PHP类库,可以用来读取和写入Microsoft Excel格式的电子表格文件。

2. 实现

2.1 安装

首先,我们需要安装 ThinkPHP 和 PHPExcel,可以使用 Composer 进行安装,具体方法可以参考官网文档。

2.2 控制器

我们需要在 MVC 中添加一个控制器(Controller),在该控制器中添加一个 action,通过该 action 来实现生成 Excel 报表的功能。

<?php
namespace app\index\controller;

use think\Controller;
use think\Loader;

class Index extends Controller
{
    public function index()
    {
        // 实现业务逻辑
    }

    /**
     * 生成 Excel 报表
     */
    public function exportExcel()
    {
        // 获取数据
        $data = [
            ['姓名', '年龄'],
            ['张三', '18'],
            ['李四', '19'],
            ['王五', '20']
        ];

        // 加载 PHPExcel 类
        Loader::import('PHPExcel.PHPExcel');
        $PHPExcel = new \PHPExcel();

        // 设置表格头
        $PHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', '姓名')
            ->setCellValue('B1', '年龄');

        // 填充数据
        $num = 2;
        foreach ($data as $value) {
            $PHPExcel->setActiveSheetIndex(0)
                ->setCellValue('A'.$num, $value[0])
                ->setCellValue('B'.$num, $value[1]);
            $num++;
        }

        // 导出 Excel
        $filename = 'test.xlsx';

        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="'.$filename.'"');
        header('Cache-Control: max-age=0');

        $objWriter = \PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel2007');
        $objWriter->save('php://output');
    }
}

2.3 视图

在展示界面上,我们可以使用 HTML 或者是其他前端框架来实现。在点击导出 Excel 按钮时,可以通过 AJAX 请求后端控制器中的 action。

<button onclick="exportExcel()">导出 Excel</button>

<script>
function exportExcel() {
    // AJAX 请求实现导出 Excel
    $.ajax({
        type: 'POST',
        url: '/index.php/index/Index/exportExcel',
        success: function(msg) {
            window.location.href = msg;
        }
    });
}
</script>

3. 示例说明

3.1 示例一

我们以本例中的代码为例,来生成一个包含姓名和年龄的 Excel 报表。在点击导出 Excel 按钮之后,将会下载一个名为“test.xlsx”的 Excel 文件,其中包含姓名为张三、李四、王五的三个人的年龄信息。

3.2 示例二

我们修改一下代码,来生成一个更为复杂的 Excel 报表,包含多个表单和多行数据,更适合实际的生产环境。

<?php
namespace app\index\controller;

use think\Controller;
use think\Loader;

class Report extends Controller
{
    /**
     * 生成 Excel 报表
     */
    public function exportExcel()
    {
        // 加载模型
        $model = model('Report');

        // 获取数据
        $user = $model->getUserList();
        $order = $model->getOrderList();

        // 加载 PHPExcel 类
        Loader::import('PHPExcel.PHPExcel');
        $PHPExcel = new \PHPExcel();

        // 设置表格头
        $PHPExcel->createSheet();
        $PHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', '用户名')
            ->setCellValue('B1', '注册时间')
            ->setCellValue('C1', '积分');

        // 填充用户数据
        $num = 2;
        foreach ($user as $value) {
            $PHPExcel->setActiveSheetIndex(0)
                ->setCellValue('A'.$num, $value['username'])
                ->setCellValue('B'.$num, $value['reg_time'])
                ->setCellValue('C'.$num, $value['points']);
            $num++;
        }

        // 设置表格头
        $PHPExcel->createSheet();
        $PHPExcel->setActiveSheetIndex(1)
            ->setCellValue('A1', '订单号')
            ->setCellValue('B1', '生成时间')
            ->setCellValue('C1', '状态');

        // 填充订单数据
        $num = 2;
        foreach ($order as $value) {
            $PHPExcel->setActiveSheetIndex(1)
                ->setCellValue('A'.$num, $value['order_id'])
                ->setCellValue('B'.$num, $value['create_time'])
                ->setCellValue('C'.$num, $value['status']);
            $num++;
        }

        // 导出 Excel
        $filename = 'report.xlsx';

        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="'.$filename.'"');
        header('Cache-Control: max-age=0');

        $objWriter = \PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel2007');
        $objWriter->save('php://output');
    }
}

此时,我们定义了两个表单,分别展示了用户数据和订单数据。在视图中点击导出 Excel 按钮之后,将会下载一个名为“report.xlsx”的 Excel 文件,其中包含了两个表单,一个表单展示了用户数据,另一个表单则展示了订单数据。

4. 总结

本文通过一个简单的示例实现了使用 ThinkPHP + PHPExcel 实现生成 Excel 报表的功能,包括了控制器的编写、视图的设计和导出 Excel 的方法,也给出了另一个更为复杂的示例,能够展现出更为多样化的 Excel 报表。希望能给大家提供一些参考和帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:thinkPHP+phpexcel实现excel报表输出功能示例 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • php实现微信原生支付(扫码支付)功能

    让我来为您讲解如何实现PHP实现微信原生支付(扫码支付)。 1. 注册微信开发者账号 首先需要去微信公众平台注册开发者账号,并完成账号认证等操作,获取到相应的AppID、AppSecret等信息。 2. 配置商户信息 在微信商户平台中开通账户,并进行相关的商户信息配置。在商户平台中会获取到一些必要的信息,如商户号(mch_id)、密钥(key)等。 3. 下…

    PHP 2023年5月27日
    00
  • 微信小程序(订阅消息)功能

    下面是微信小程序订阅消息的完整攻略: 1. 申请订阅消息权限 首先需要在小程序后台申请订阅消息权限。具体步骤如下: 进入小程序后台,点击“开发”->“接口设置”->“订阅消息”。 点击“添加模板”,选择需要订阅的消息模板,填写模板所需的参数信息。 提交审核,等待微信官方审核通过。 2. 前端实现 在前端页面需要先引入wx.requestSubsc…

    PHP 2023年5月23日
    00
  • 在线竞拍系统的PHP实现框架(一)

    下面我就详细讲解一下“在线竞拍系统的PHP实现框架(一)”的完整攻略。 引言 竞拍系统是一个常见的业务场景,在线竞拍系统的实现则需要考虑到多方面的问题,如安全性、数据一致性、并发性等。本文旨在介绍一个基于PHP实现的在线竞拍系统框架,可供读者参考和使用。 开发环境 本系统的开发环境为: 操作系统:Windows/Linux Web服务器:Apache/Ngi…

    PHP 2023年5月24日
    00
  • PHP数组实例总结与说明

    PHP数组实例总结与说明 什么是PHP数组? PHP数组是一种常用的数据结构,它可以保存多个变量,并通过键名(key)来访问不同的变量。数组在PHP中是一种特殊的变量类型,它可以用来保存任意类型的数据(例如数字、字符串、对象等),并且可以快速地进行增删改查等操作。 如何创建PHP数组? PHP数组可以使用以下两种语法方式进行创建: 方式1: 通过 array…

    PHP 2023年5月23日
    00
  • PHP自动重命名文件实现方法

    下面详细讲解“PHP自动重命名文件实现方法”的完整攻略。 简介 在上传多个文件时,为了避免文件名重复覆盖原有文件,我们需要给文件自动进行重命名,以确保文件名的唯一性。本文将介绍如何使用PHP实现自动重命名文件。 实现方法 在PHP中,我们可以通过以下步骤实现自动重命名文件: 获取上传文件的扩展名(后缀),并生成一个唯一的随机文件名; 判断生成的随机文件名是否…

    PHP 2023年5月24日
    00
  • php基础教程 php内置函数实例教程

    标题 PHP基础教程和PHP内置函数实例教程 概述PHP是一种常用的服务器端编程语言,它可以用来开发 Web 应用程序。PHP语言不需要编译,它是一种解释型语言。PHP基础教程和PHP内置函数实例教程是指在学习这种编程语言时,学习PHP的基础知识和内置函数的应用。 PHP基础教程 PHP基础教程主要包括以下知识点: PHP基本语法 学习PHP的第一个步骤是了…

    PHP 2023年5月24日
    00
  • php实现的MySQL通用查询程序

    下面我将详细讲解“php实现的MySQL通用查询程序”的完整攻略。 1. 准备工作 在开始编写php实现的MySQL通用查询程序之前,我们需要进行一些准备工作: 安装PHP和MySQL:在开始编写代码之前,你需要先安装好PHP和MySQL。如果你还没有安装,可以根据你的操作系统,自行查找安装教程。 创建数据库和数据表:我们需要创建一个测试的数据库,用于测试查…

    PHP 2023年5月23日
    00
  • phpQuery采集网页实现代码实例

    关于 “phpQuery采集网页实现代码实例”,我可以提供以下完整攻略: 一、什么是phpQuery phpQuery是一款基于jQuery语法的PHP解析HTML网页的工具,它可以非常方便地获取、修改和提取HTML网页中的各种元素。具体来说,phpQuery提供了一种新的解析HTML网页的方式,将DOM转变为可供PHP程序操作的数据结构,从而可以通过PHP…

    PHP 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部