iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php使用PhpSpreadsheet导出Excel表格详解
  • 207
分享到

php使用PhpSpreadsheet导出Excel表格详解

phpexcelSpreadsheet 2023-09-01 15:09:59 207人浏览 独家记忆
摘要

本文会介绍PHP使用phpSpreadsheet操作excel,供大家参考,具体内容如下: PhpSpreadsheet介绍 1、简介 PhpSpreadsheet 是一个用纯PHP编写的库,提供了一

本文会介绍PHP使用phpSpreadsheet操作excel,供大家参考,具体内容如下:

PhpSpreadsheet介绍

1、简介
PhpSpreadsheet 是一个用纯PHP编写的库,提供了一组类,使您可以读取和写入不同的电子表格文件格式
PhpSpreadsheet 提供了丰富的api接口,可以设置诸多单元格以及文档属性,包括样式、图片、日期、函数等等诸多应用,总之你想要什么样的Excel表格,PhpSpreadsheet都能做到。

使用 PhpSpreadsheet 开发的PHP要求 7.1或更高版本
PhpSpreadsheet 支持链式操作

2、安装
使用 composer 安装,在项目根目录下执行下面命令,即可安装。本次是在ThinkPHP5框架里使用。

composer require phpoffice/phpspreadsheet

使用

1、引用和实例化

use PhpOffice\PhpSpreadsheet\Spreadsheet;// 实例化 Spreadsheet 对象$spreadsheet = new Spreadsheet();

2、获取工作簿
getActiveSheet

// 获取活动工作薄$sheet = $spreadsheet->getActiveSheet();

单元格操作

1、获取单元格
两种获取单元格方式

  • getCell
  • getCellByColumnAndRow 数字单元格坐标获取单元格
$cell = $sheet->getCell('A1');$cell = $sheet->getCellByColumnAndRow(1,1); // 参数:列、行

2、设置单元格的值

  • setValue
  • setCellValue
  • setCellValueByColumnAndRow
// 获取单元格$cellA = $sheet->getCell('A1');// 设置单元格值$cellA->setValue('姓名'); // 设置A1单元格的值为姓名// 给A1设置值,参数:单元格位置,值$sheet->setCellValue('A1','ID');//给A2赋值 hello$sheet->setCellValueByColumnAndRow(1, 2, 'hello');

3、单元格文字样式

  • getStyle 获取单元格样式
  • getFont 获取单元格文字样式
  • setBold 设置文字粗细
  • setName 设置文字字体
  • setSize 设置文字大小
//将A1至D1单元格设置成粗体$sheet->getStyle('A1:D1')->getFont()->setBold(true);//将A1单元格设置成粗体,黑体,10号字$sheet->getStyle('A1')->getFont()->setBold(true)->setName('黑体')->setSize(10);

4、单元格文字颜色

  • getColor() 获取坐标颜色
  • setRGB() 设置字体颜色(颜色值带#)
  • getRGB() 获取字体颜色
  • setARGB() 设置字体颜色(颜色值不带#)
  • getARGB() 获取字体颜色
// B3单元格设置颜色$sheet->getStyle('B3')->getFont()->getColor()->setRGB('#AEEEEE');$sheet->getStyle('B3')->getFont()->getColor()->setARGB('FFFF0000');

5、单元格内文字换行

  • setWrapText 设置文本里的\n符合为:换行
//使用 \n 进行单元格内换行,相当于 Alt+Enter$sheet->getCell('A1')->setValue("hello\nworld");$sheet->getStyle('A1')->getAlignment()->setWrapText(true);

6、单元格列和行

  • getColumnDimension 获取一列
  • getWidth 获取一列的宽度
  • setWidth 设置一列的宽度
  • setAutoSize 设置一列的宽度自动调整
  • getDefaultColumnDimension 获取一列的默认值
//设置默认列宽20$sheet->getDefaultColumnDimension()->setWidth(20);//将A列宽度设置成20$sheet->getColumnDimension('A')->setWidth(20);//自动计算列宽$sheet->getColumnDimension('A')->setAutoSize(true);
  • getRowDimension 获取一行
  • getRowHeight 获取一行的高度
  • setRowHeight 设置一行的高度
//设置默认行高$sheet->getDefaultRowDimension()->setRowHeight(20);//设置第一行行高为20pt$sheet->getRowDimension('1')->setRowHeight(20);
  • getHighestColumn 获取总列数
  • getHighestRow 获取总行数
echo $sheet->getHighestColumn();echo $sheet->getHighestRow();

7、单元格样式

  • applyFromArray 设置单元格样式
  • 对齐
use PhpOffice\PhpSpreadsheet\Style\Alignment;// 居中对齐$styleArray = [    'alignment' => [        'horizontal' => Alignment::HORIZONTAL_CENTER, //水平居中        'vertical' => Alignment::VERTICAL_CENTER, //垂直居中    ],];$worksheet->getStyle('A1')->applyFromArray($styleArray);
  • 边框
    上 下 左 右 全部 边框都可设置
//红色边框use PhpOffice\PhpSpreadsheet\Style\Border;// 外边框// Border 类中的常量都是边框样式// Border::BORDER_THICK 边框样式$styleArray = [    'borders' => [        'outline' => [            'borderStyle' => Border::BORDER_THICK,            'color' => ['argb' => 'FFFF0000'],        ],    ],];$worksheet->getStyle('B2:G8')->applyFromArray($styleArray);

8、单元格合并和拆分

  • mergeCells 合并
  • unmergeCells 拆分
// 合并A1到C1列$sheet->mergeCells('A1:C4');// 合并A1到A4行$sheet->mergeCells('A1:A4');// 合并后,赋值只能给A1,开始的坐标。$sheet->getCell('A1')->setValue('西安');// 拆分$sheet->mergeCells('A1:C4');$sheet->unmergeCells('A1:A4');

9、超链接

  • getHyperlink 获取单元格链接
  • setUrl 设置单元格链接
$spreadsheet->getActiveSheet()->setCellValue('E6', 'xxxx的博客');$spreadsheet->getActiveSheet()->getCell('E6')->getHyperlink()->setUrl('https://blog.csdn.net/u011167662');

10、使用函数
SUM求和A;VERAGE平均数;MIN最小值;MAX最大值

$sheet->setCellValue('A3', '=SUM(A1:A2)');$sheet->setCellValue('A3', '=MAX(A1:A2)');

11、批量赋值

  • fromArray 从数组中的值填充工作表

参数1:数据(数组)
参数2:去除某个值
参数3:从哪个位置开始

$sheet->fromArray(        [            [1,'欧阳克','18岁','188cm'],            [2,'黄蓉','17岁','165cm'],            [3,'郭靖','21岁','180cm']        ], 3, 'A2' );

12、写入图片

use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;//写入图片$drawing = new Drawing();$drawing->setName('LoGo')->setDescription('Logo')->setPath('../files/1.jpg')->setHeight(30)->setCoordinates('D6')->setOffsetX(50)->setOffsetY(6);$drawing->setRotation(25);$drawing->getShadow()->setVisible(true);$drawing->getShadow()->setDirection(45); $drawing->setWorksheet($sheet);

工作簿操作

1、xlsx 文件导出

  • IOFactory::createWriter 写入到文件
use PhpOffice\PhpSpreadsheet\IOFactory;// MIME 协议,文件的类型,不设置,会默认htmlheader('Content-Type:application/vnd.openxmlfORMats-officedocument.spreadsheetml.sheet'); // MIME 协议的扩展$filename = date('Y-m-d').'工作报告单';header('Content-Disposition:attachment;filename='.$filename .'.xlsx');// 缓存控制header('Cache-Control:max-age=0');$write = IOFactory::createWriter($spreadsheet, 'Xlsx');$write->save('php://output');

2、xls 文件导出

// MIME 协议,文件的类型,不设置,会默认htmlheader('Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); // MIME 协议的扩展$filename = date('Y-m-d').'工作报告单';header('Content-Disposition:attachment;filename='.$filename .'.xls');// 缓存控制header('Cache-Control:max-age=0');$write = IOFactory::createWriter($spreadsheet, 'Xls');$write->save('php://output');

3、设置工作簿标题

  • setTitle
$sheet->setTitle('标题1');

实战

导出简单数据(使用 ThinkPHP5 框架)

namespace app\api\controller;use PhpOffice\PhpSpreadsheet\Spreadsheet;use PhpOffice\PhpSpreadsheet\Style\Alignment;use PhpOffice\PhpSpreadsheet\Style\Border;use PhpOffice\PhpSpreadsheet\IOFactory;class Excel{public function exporteasy(){$spreadsheet = new Spreadsheet();$worksheet = $spreadsheet->getActiveSheet();$title = 'Excel导出';$worksheet->setTitle($title);$worksheet->mergeCells('B2:D2');$worksheet->getRowDimension(1)->setRowHeight(50);$worksheet->getStyle('B2:D2')->applyFromArray([    'alignment' => [        'horizontal' => Alignment::HORIZONTAL_CENTER,        'vertical' => Alignment::VERTICAL_CENTER,    ],    'borders' => [        'outline' => [           'borderStyle' => Border::BORDER_THIN,            'color' => ['argb' => '000000']        ],    ],    'font' => [        'name' => '黑体',        'bold' => true,        'size' => 22    ]]);$worksheet->setCellValueByColumnAndRow(2, 2, $title);$worksheet->setCellValueByColumnAndRow(2, 3, '姓名');$worksheet->setCellValueByColumnAndRow(3, 3, '性别');$worksheet->setCellValueByColumnAndRow(4, 3, '年龄');$worksheet->setCellValueByColumnAndRow(2, 4, '张三');$worksheet->setCellValueByColumnAndRow(3, 4, '男');$worksheet->setCellValueByColumnAndRow(4, 4, '20');header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');header('Content-Disposition: attachment;filename=Excel导出.xlsx');header('Cache-Control: max-age=0');$write = IOFactory::createWriter($spreadsheet, 'Xlsx');$write->save('php://output');}}

导出表格截图:在这里插入图片描述
2、导出数据
liu_system_log 管理员操作记录表

public function export(){$spreadsheet = new Spreadsheet();$sheet = $spreadsheet->getActiveSheet();$styleArray = ['alignment' => [        'horizontal' => Alignment::HORIZONTAL_CENTER,        'vertical' => Alignment::VERTICAL_CENTER,    ],    'borders' => [        'outline' => [            'borderStyle' => Border::BORDER_THICK,        ],    ],];$sheet->getDefaultColumnDimension()->setWidth(20);// 列宽$sheet->getDefaultRowDimension()->setRowHeight(20);// 行高// 标题$tabletitle = '管理员操作记录表';$sheet->mergeCells('A1:D1');$sheet->getRowDimension('1')->setRowHeight(40);// 行高$sheet->getStyle('A1')->applyFromArray($styleArray);$sheet->getStyle('A1')->getFont()->setBold(true)->setSize(16);$sheet->setCellValue('A1', $tabletitle);$sheet->getStyle('A2:D2')->applyFromArray($styleArray);$sheet->getStyle('A2:D2')->getFont()->setBold(true)->setSize(12);$sheet->setCellValue('A2','管理员姓名');    $sheet->setCellValue('B2','操作');    $sheet->setCellValue('C2','ip');    $sheet->setCellValue('D2','操作时间');    $data = Db::name('system_log')->select();    $sort = 0;    foreach ($data as $v){    $sheet->setCellValue('A' . ($sort + 3), $v['admin_name']);    $sheet->setCellValue('B' . ($sort + 3), $v['page']);    $sheet->setCellValue('C' . ($sort + 3), $v['ip']);    $sheet->setCellValue('D' . ($sort + 3), date('Y-m-d H:i:s', $v['add_time']));    $sort++;    }    // 工作簿标题    $sheettitle = '管理员操作记录表';    $sheet->setTitle($sheettitle);header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');// 文件名$filename = '管理员操作记录表';header('Content-Disposition: attachment;filename=' . $filename .'.xlsx');header('Cache-Control: max-age=0');$write = IOFactory::createWriter($spreadsheet, 'Xlsx');$write->save('php://output');}

来源地址:https://blog.csdn.net/weixin_44888397/article/details/131484139

--结束END--

本文标题: php使用PhpSpreadsheet导出Excel表格详解

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

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

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

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

下载Word文档
猜你喜欢
  • php使用PhpSpreadsheet导出Excel表格详解
    本文会介绍php使用PhpSpreadsheet操作Excel,供大家参考,具体内容如下: PhpSpreadsheet介绍 1、简介 PhpSpreadsheet 是一个用纯PHP编写的库,提供了一...
    99+
    2023-09-01
    php excel Spreadsheet
  • PHP使用PhpSpreadsheet 导出excel文件
            PhpSpreadsheet 是使用PHP语言编写的用户操作excel的类库,提供了一系列丰富的接口,可很方便的对文档属性、单元格进行操作,包括设置样式、图片、日期、函数等等。 PhpSpreadsheet用方法也很简单,示...
    99+
    2023-10-25
    excel php
  • PHP 使用 PhpSpreadsheet 操作 excel 表格
    1 . 使用 命令 : composer require phpoffice/phpspreadsheet 安装 PhpSpreadsheet 读取excel表格中的内容 ...
    99+
    2023-09-11
    php 开发语言
  • PHP使用PhpSpreadsheet库的操作Excel表格
    一、PhpSpreadsheet 介绍 PhpSpreadsheet是一个用纯PHP编写的库,提供了一组类,使您可以读取和写入不同的电子表格文件格式 PhpSpreadsheet提供了丰富的API接口...
    99+
    2023-10-01
    php excel
  • 使用PhpSpreadsheet怎么导入导出Excel
    这篇文章给大家介绍使用PhpSpreadsheet怎么导入导出Excel,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。phpspreadsheet 引入由于PHPExcel早就停止更新维护,所以适用phpspreads...
    99+
    2023-06-15
  • php导出Excel表格
    php保存excel表格 一,首要条件二,引入对象2.1,创建sheet2.2,创建表头2.3,写入表头2.4,记录表数据 三,保存四,设置表格格式4.1,创建sheet表4.2,单元格设...
    99+
    2023-09-06
    php
  • Java Poi导出Excel表格详解
    一、导出下面的表格 二、流程详解         1、导出excel需要先将数据准备好         2、创建工作傅对象SXSSFWorkbook         3、使用工作傅对象创建sheet对象(工作页)         4、使用...
    99+
    2023-09-01
    java
  • 使用SpringBoot+EasyExcel+Vue实现excel表格的导入和导出详解
    目录一、导入和导出二、导出数据为excel实现过程三、将excel中的数据导入到数据库中一、导入和导出 导入:通过解析excel表格中的数据,然后将数据放到一个集合中,接着通过对持久...
    99+
    2024-04-02
  • 怎么用vue导出excel表格
    这篇文章主要介绍了怎么用vue导出excel表格的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用vue导出excel表格文章都会有所收获,下面我们一起来看看吧。一、安装vue-json-excelnpm&n...
    99+
    2023-06-30
  • PhpSpreadsheet 基本使用和导入 导出 模版生成Excel文件
    一. 基本使用 ...
    99+
    2023-09-08
    excel PhpSpreadsheet php
  • PHP使用PhpSpreadsheet实现导出Excel时带下拉框列表 (可支持三级联动)
    因项目需要导出Excel表   需要支持下拉   且 还需要支持三级联动功能  目前应为PHPExcel 不在维护,固采用 PhpSpreadsheet 效果如图:  第一步:首先 使用composer 获取PhpSpreadsheet ...
    99+
    2023-09-03
    excel
  • ASP.NETMVC把表格导出到Excel
    有关Model: namespace MvcApplication1.Models { public class Coach { public in...
    99+
    2022-11-13
    ASP.NET MVC 表格导出到Excel
  • php如何将数据导出成excel表格
    小编给大家分享一下php如何将数据导出成excel表格,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理...
    99+
    2023-06-14
  • 详解使用koa2完成Excel导入导出
    目录一、安装 node-xlsx二、导出excel表三、导入excel表结语一、安装 node-xlsx npm i node-xlsx 二、导出excel表 首先是查询出数据库...
    99+
    2023-05-13
    koa2导入导出Excel koa2 Excel
  • vue导出excel表格的新手详细教程
    目录前言一、安装vue-json-excel二、main.js中引入三、在代码中使用四、数据五、效果六、一些常用参数总结前言 在开发的时候,会经常用的导出excel表格功能,刚好自己...
    99+
    2024-04-02
  • 《springboot中实现excel表格导出》
    《springboot中实现excel表格导出》 简介 在Spring Boot中,实现Excel表格导出的方式有很多种,以下是几种常见的方法: 使用Apache POI:Apache POI是一个开源的Java API,用于处理Micro...
    99+
    2023-08-23
    spring boot excel java
  • Java利用POI实现导入导出Excel表格
    本文实例为大家分享了Java利用POI实现导入导出Excel表格的具体代码,供大家参考,具体内容如下 一、Java利用POI实现导入导出Excel表格demo 1.引入依赖 <...
    99+
    2024-04-02
  • PHPOffice/PhpSpreadsheet的导入导出操作基本使用
    phpspreadsheet 引入 由于PHPExcel早就停止更新维护,所以适用phpspreadsheet。不知道如何通过composer拉取项目包的同学,可以查看Composer学习一文。引入方...
    99+
    2023-09-08
    php
  • elementui导出数据为xlsx、excel表格
    最近学习vue项目,遇见elementui导出数据为xlsx、excel表格,今天就介绍给大家,也给自己留个笔记,方便查询 我这里为了同学们好理解,把所有元素都写到一个页面。 &nb...
    99+
    2024-04-02
  • Python django导出excel详解
    目录一、基础环境二、需求三、功能实现四、源码一、序化类实现二、手动转换外键实现总结django restframework 导入excel内容,可以查看另外一篇文章 一、基础环境 w...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作