PHP实现导出带样式的Excel

yizhihongxing

接下来我会详细讲解“PHP实现导出带样式的Excel”的完整攻略。

一、背景介绍

在实际的开发工作中,我们常常需要使用到Excel表格,然而PHP并没有内置的类或函数可以直接导出带样式的Excel,因此我们需要借助一些第三方工具来实现。

二、选择合适的第三方工具

市场上有很多第三方工具可以帮助我们实现导出Excel的功能,例如PHPExcel、PhpSpreadsheet等,这里我们以PhpSpreadsheet为例进行讲解。

2.1 安装PhpSpreadsheet

可以通过Composer来安装PhpSpreadsheet,执行以下命令即可:

composer require phpoffice/phpspreadsheet

2.2 引入PhpSpreadsheet

安装完成后,在需要使用的文件中引入PhpSpreadsheet:

require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

三、实现导出功能

接下来我们来讲解如何使用PhpSpreadsheet实现导出功能。

3.1 新建表格

// 新建表格
$spreadsheet = new Spreadsheet();
// 获取活动表
$sheet = $spreadsheet->getActiveSheet();

3.2 设置表格的标题

// 设置表格的标题
$sheet->setCellValue('A1', '姓名');
$sheet->setCellValue('B1', '年龄');
$sheet->setCellValue('C1', '性别');

3.3 设置表格的数据

// 设置表格的数据
$data = array(
    array('张三', 18, '男'),
    array('李四', 21, '女'),
    array('王五', 25, '男'),
);
// 循环写入数据
foreach($data as $key => $value) {
    $sheet->setCellValue('A'.($key+2), $value[0]);
    $sheet->setCellValue('B'.($key+2), $value[1]);
    $sheet->setCellValue('C'.($key+2), $value[2]);
}

3.4 设置表格的样式

// 设置表格的样式
// 头部样式
$headerStyle = array(
    'font' => array('bold' => true,),
    'alignment' => array('horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,),
    'fill' => array('fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID, 'startColor' => array('rgb' => 'E0E0E0'),),
);
$sheet->getStyle('A1:C1')->applyFromArray($headerStyle);
// 内容样式
$contentStyle = array(
    'fill' => array('fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID, 'startColor' => array('rgb' => 'F5F5F5'),),
);
$sheet->getStyle('A2:C4')->applyFromArray($contentStyle);

3.5 生成Excel文件

// 生成Excel文件
$writer = new Xlsx($spreadsheet);
$writer->save('./example.xlsx');

四、示例说明

4.1 示例一:基础表格导出

假设我们需要导出一个学生成绩表格,包含姓名、年龄、性别三项信息。数据如下:

姓名 年龄 性别
张三 18
李四 21
王五 25

代码实现如下:

require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

// 新建表格
$spreadsheet = new Spreadsheet();
// 获取活动表
$sheet = $spreadsheet->getActiveSheet();

// 设置表格的标题
$sheet->setCellValue('A1', '姓名');
$sheet->setCellValue('B1', '年龄');
$sheet->setCellValue('C1', '性别');

// 设置表格的数据
$data = array(
    array('张三', 18, '男'),
    array('李四', 21, '女'),
    array('王五', 25, '男'),
);
// 循环写入数据
foreach($data as $key => $value) {
    $sheet->setCellValue('A'.($key+2), $value[0]);
    $sheet->setCellValue('B'.($key+2), $value[1]);
    $sheet->setCellValue('C'.($key+2), $value[2]);
}

// 生成Excel文件
$writer = new Xlsx($spreadsheet);
$writer->save('./example.xlsx');

4.2 示例二:带样式的表格导出

基于示例一,我们在表格中增加一些样式,如下表格:

姓名 年龄 性别
张三 18
李四 21
王五 25

头部样式:加粗、居中、背景色为淡灰色;

内容样式:背景色为浅灰色。

代码实现如下:

require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

// 新建表格
$spreadsheet = new Spreadsheet();
// 获取活动表
$sheet = $spreadsheet->getActiveSheet();

// 设置表格的标题
$sheet->setCellValue('A1', '姓名');
$sheet->setCellValue('B1', '年龄');
$sheet->setCellValue('C1', '性别');

// 设置表格的数据
$data = array(
    array('张三', 18, '男'),
    array('李四', 21, '女'),
    array('王五', 25, '男'),
);
// 循环写入数据
foreach($data as $key => $value) {
    $sheet->setCellValue('A'.($key+2), $value[0]);
    $sheet->setCellValue('B'.($key+2), $value[1]);
    $sheet->setCellValue('C'.($key+2), $value[2]);
}

// 设置表格的样式
// 头部样式
$headerStyle = array(
    'font' => array('bold' => true,),
    'alignment' => array('horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,),
    'fill' => array('fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID, 'startColor' => array('rgb' => 'E0E0E0'),),
);
$sheet->getStyle('A1:C1')->applyFromArray($headerStyle);
// 内容样式
$contentStyle = array(
    'fill' => array('fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID, 'startColor' => array('rgb' => 'F5F5F5'),),
);
$sheet->getStyle('A2:C4')->applyFromArray($contentStyle);

// 生成Excel文件
$writer = new Xlsx($spreadsheet);
$writer->save('./example.xlsx');

以上就是使用PhpSpreadsheet实现导出带样式的Excel的完整攻略,希望能对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP实现导出带样式的Excel - Python技术站

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

相关文章

  • PHP实现远程下载文件到本地

    下面是PHP实现远程下载文件到本地的完整攻略: 一、准备工作 在开始编写代码之前,我们需要安装PHP和相关扩展。本示例中我们需要用到的是curl扩展,可以使用以下命令进行安装: sudo apt-get install php-curl 二、实现远程下载文件到本地 实现远程下载文件到本地可以分为以下几个步骤: 1. 初始化curl 使用curl库实现远程下载…

    PHP 2023年5月23日
    00
  • php生成不重复随机数、数组的4种方法分享

    PHP生成不重复随机数、数组的4种方法分享 在PHP编程过程中,经常会使用随机数或数组,但是如果需要生成不重复的随机数或数组就需要一些特殊的处理,本篇文章就来详细讲解PHP生成不重复随机数、数组的4种方法分享。 方法一 array_unique+array_rand 这种方法先生成一个包含所有可能值的数组,再随机从中选取元素,使用array_unique()…

    PHP 2023年5月26日
    00
  • php简单生成一组与多组随机字符串的方法

    生成随机字符串是一种常见的应用场景,比如生成密码、验证码等等。在 PHP 中实现生成随机字符串也非常简单,本文将介绍两种方法:生成单个字符串和生成多个字符串(数组)。 生成单个随机字符串 生成单个随机字符串可以使用 PHP 自带的 rand() 函数,结合 PHP 的字符处理函数实现。 // 生成指定长度的随机字符串 function generateRan…

    PHP 2023年5月26日
    00
  • php让图片可以下载的代码

    下面是 PHP 实现图片下载的完整攻略。 第一步:确定需要下载的图片地址 在 PHP 中,我们可以利用 $_GET 变量获取请求参数,例如可以这样获取图片地址: $ImageUrl = $_GET["url"]; 第二步:获取图片信息并设置 HTTP 头 获取图片信息需要使用 getimagesize 函数,代码示例如下: header(…

    PHP 2023年5月23日
    00
  • 解析PHP处理换行符的问题 \r\n

    文本中的换行符在不同的操作系统中可能有区别,例如Windows系统使用CR(回车符)和LF(换行符)作为换行符,而Unix-like系统只使用LF作为换行符。当在PHP代码中处理这些不同类型的换行符时,必须格外小心以确保代码的可移植性。 下面是解析PHP处理换行符的步骤: 1. 使用PHP提供的常量 PHP提供了两个常量在不同操作系统中处理换行符,分别是PH…

    PHP 2023年5月26日
    00
  • PHP中引用类型和值类型功能与用法示例

    PHP 中引用类型和值类型在变量赋值和函数传参时有着不同的行为,这里提供以下攻略: 引用类型和值类型的定义 值类型(也称为基本类型)在 PHP 中包括整数、浮点数、布尔值和字符串,以及常量和 NULL 值。当把一个值类型变量赋给另一个变量时,实际上是把变量的值复制了一份。例如: $num1 = 42; $num2 = $num1; $num2 = 99; e…

    PHP 2023年5月26日
    00
  • 如何在matlab路径中安装yalmip Matlab R2014a添加yalmip图文教程

    下面给您详细讲解如何在Matlab路径中安装Yalmip及添加Yalmip的完整攻略。步骤如下: 1. 下载并安装Yalmip Yalmip是一个Matlab的优化工具箱,可以通过下面Yalmip的官网进行下载: Yalmip官网下载地址 我们下载对应版本的Yalmip,并将其解压,一般会得到一个名为“Yalmip”的文件夹。 2. 将Yalmip添加到Ma…

    PHP 2023年5月26日
    00
  • PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】

    标题设置 首先,在文档开头设置一个主标题,用一个或多个#号标识; 例如:“PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】” PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】 问题说明 在第一部分,我们需要说明什么是图片防盗链,以及为什么需要破解。 图片防盗链是指在网站上通过技术手段,禁止其他网站直接访问该网站上的图片资源。这…

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