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

yizhihongxing

下面我将给您详细讲解“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. 准备工作 在编写读取文本文件代码之前,需要先准备好文本文件。可以使用任何文本编辑器创建文本文件,例如Notepad++、Sublime Text等。在创建文本文件时需要注意以下几点: 文本文件的编码应当为UTF-8,这是保证中文字符能够被正常读入的前提。 每行文本末尾需要使用回车符和换…

    PHP 2023年5月26日
    00
  • PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】

    首先,我们需要下载并安装imagick扩展,可以在官方网站(https://pecl.php.net/package/imagick)上下载对应版本的imagick扩展,然后通过php.ini文件或者其他方式来加载扩展。 接下来,我们就可以使用imagick扩展来实现合成图片的两种方法: 方法一:使用canvas 我们可以使用canvas方法来创建一个新的画…

    PHP 2023年5月26日
    00
  • 浅谈php使用curl模拟多线程发送请求

    当我们需要向一个接口发送大量请求时,使用curl模拟多线程发送请求是一个非常实用的方法。以下是浅谈php使用curl模拟多线程发送请求的完整攻略。 准备工作 在开始之前,我们需要确认服务器是否已安装curl,以及我们是否在PHP的配置文件中启用了curl扩展。可以使用以下命令检查curl是否已安装: curl –version 如果返回了curl的版本信息…

    PHP 2023年5月27日
    00
  • 非常重要的php正则表达式详解

    【攻略】非常重要的PHP正则表达式详解 什么是正则表达式 正则表达式是一种字符串匹配的模式,它可以用来匹配、搜索、替换和分割字符串。 在PHP中使用正则表达式可以大大提高字符串处理的效率,同时也增强了字符串处理的灵活性。 正则表达式的基础语法 正则表达式的基本语法为:模式/修饰符。 其中,模式是要匹配的字符串模式,修饰符是用来修饰模式的符号。 常用的修饰符包…

    PHP 2023年5月26日
    00
  • php获取数组中重复数据的两种方法

    获取数组中重复数据是PHP中常见的需求之一,下面介绍两种常见的获取数组中重复数据的方法。 方法一:array_count_values方法 首先我们可以使用 array_count_values 函数来获取数组中重复数据的信息。 该函数的作用是统计数组中每个值出现的次数。 array_count_values ( array $array ) : array…

    PHP 2023年5月26日
    00
  • PHP实现统计代码行数小工具

    下面是详细讲解“PHP实现统计代码行数小工具”的完整攻略: 前言 代码行数统计是代码质量评估的一个重要参数,而通过一个小工具,我们可以轻松地对我们的代码行数进行快速统计。下面,我们将详细讲解如何使用PHP实现一个简单的代码行数统计工具。 Step 1. 读取目标文件 通过 PHP 的 file 函数,我们可以读取到我们所需要统计行数的文件。示例代码如下: $…

    PHP 2023年5月23日
    00
  • 微信小程序ajax实现请求服务器数据及模版遍历数据功能示例

    下面是详细讲解“微信小程序ajax实现请求服务器数据及模板遍历数据功能示例”的攻略: 前言 微信小程序是一种轻量级应用程序,可以在微信中运行,它采用了类似于React的组件化的编程模式,使用WXML、WXSS、JS和JSON,可以快速开发出小程序应用。 在小程序中,我们可能需要从服务器获取数据,随后将数据渲染到页面中,这就需要用到ajax技术了。下面将详细介…

    PHP 2023年5月23日
    00
  • PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)

    当我们需要对一个数组中的所有元素进行计算并得到计算结果时,PHP提供了array_sum函数和array_product函数来进行求和和求积的操作。 array_sum函数 array_sum函数可以用于计算数组中所有元素的和,并返回和的值。具体的用法如下: <?php $array = [1, 2, 3, 4, 5]; $sum = array_su…

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