PhpSpreadsheet中文文档 | Spreadsheet操作教程实例


Posted in PHP onApril 01, 2021

Spreadsheet 支持excel 函数 公式使用

<?php
	namespace app
	# 给类文件的命名空间起个别名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# Xlsx类 将电子表格保存到文件
	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
	# 实例化 Spreadsheet 对象
	$spreadsheet = new Spreadsheet();
	# 获取活动工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->setCellValue('A1','10');
	$sheet->setCellValue('B1','15');
	$sheet->setCellValue('C1','20');
	$sheet->setCellValue('D1','25');
	$sheet->setCellValue('E1','30');
	$sheet->setCellValue('G1','35');
	$sheet->setCellValue('A2', '总数:');
	$sheet->setCellValue('B2', '=SUM(A1:G1)');
	$sheet->setCellValue('A3', '平均数:');
	$sheet->setCellValue('B3', '=AVERAGE(A1:G1)');
	$sheet->setCellValue('A4', '最小数:');
	$sheet->setCellValue('B4', '=MIN(A1:G1)');
	$sheet->setCellValue('A5', '最大数:');
	$sheet->setCellValue('B5', '=MAX(A1:G1)');
	$sheet->setCellValue('A6', '最大数:');
	$sheet->setCellValue('B6', '\=MAX(A1:G1)');	// 使用转义字符
	// 批量赋值
	$sheet->setCellValue('A1','ID');
    $sheet->setCellValue('B1','姓名');
    $sheet->setCellValue('C1','年龄');
    $sheet->setCellValue('D1','身高');
    $sheet->fromArray(
        [
            [1,'欧阳克','18岁','188cm'],
            [2,'黄蓉','17岁','165cm'],
            [3,'郭靖','21岁','180cm']
        ],
        3,
        'A2'
    );
	// 合并单元格 合并后,赋值只能给A1,开始的坐标。
	$sheet->mergeCells('A1:B5');
    $sheet->getCell('A1')->setValue('欧阳克');
    
	# Xlsx类 将电子表格保存到文件
	$writer = new Xlsx($spreadsheet);
	$writer->save('1.xlsx');
	
   // 客户端文件下载
	header('Content-Type:application/vnd.ms-excel');
    header('Content-Disposition:attachment;filename=1.xls');
    header('Cache-Control:max-age=0');
    $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xls');
    $writer->save('php://output');

读取表格文件

<?php
	namespace app;
	# 创建读操作
	$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
	# 打开文件、载入excel表格
	$spreadsheet = $reader->load('1.xlsx');
	# 获取活动工作薄
	$sheet = $spreadsheet->getActiveSheet();

	# 获取 单元格值 和 坐标
	$cellC1 = $sheet->getCell('B2');
	echo '值: ', $cellC1->getValue(),PHP_EOL;
	echo '坐标: ', $cellC1->getCoordinate(),PHP_EOL;

	$sheet->setCellValue('B2','欧阳锋');

	# 获取 单元格值 和 坐标
	$cellC2 = $sheet->getCell('B2');
	echo '值: ', $cellC2->getValue(),PHP_EOL;
	echo '坐标: ', $cellC2->getCoordinate();

导入功能

<?php
	$file = $_FILES['file']['tmp_name'];
	# 载入composer自动加载文件
	require 'vendor/autoload.php';
	# 载入方法库
	require 'function.php';

	# 创建读操作
	$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
	# 打开文件、载入excel表格
	$spreadsheet = $reader->load($file);
	# 获取活动工作薄
	$sheet = $spreadsheet->getActiveSheet();

	# 获取总列数
	$highestColumn = $sheet->getHighestColumn();
	# 获取总行数
	$highestRow = $sheet->getHighestRow();

	# 列数 改为数字显示
	$highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn);
	$log = [];
	for($a=2;$a<$highestRow;$a++){
		$title = $sheet->getCellByColumnAndRow(1,$a)->getValue();
		$cat_fname = $sheet->getCellByColumnAndRow(2,$a)->getValue();
		$cat_name = $sheet->getCellByColumnAndRow(3,$a)->getValue();
		$price = $sheet->getCellByColumnAndRow(4,$a)->getValue();
		$img = $sheet->getCellByColumnAndRow(5,$a)->getValue();

		$cat_fid = find('shop_cat','id','name="'.$cat_fname.'"');
		$cat_id = find('shop_cat','id','name="'.$cat_name.'"');
		$data = [
			'title' => $title,
			'cat_fid' => $cat_fid['id'],
			'cat_id' => $cat_id['id'],
			'price' => $price,
			'img' => $img,
			'add_time' => time(),
		];
		$ins = insert('shop_list',$data);
		if($ins){
			$log[] = '第'.$a.'条,插入成功';
		}else{
			$log[] = '第'.$a.'条,插入失败';
		}
	}
	echo json_encode(['code'=>0,'msg'=>'成功','data'=>$log]);
PHP 相关文章推荐
PHP安全编程之加密功能
Oct 09 PHP
php 生成唯一id的几种解决方法
Mar 08 PHP
php生成短网址示例
May 05 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
Nov 29 PHP
php取得字符串首字母的方法
Mar 25 PHP
WordPress自定义时间显示格式
Mar 27 PHP
php中memcache 基本操作实例
May 17 PHP
Laravel 5.3 学习笔记之 安装
Aug 28 PHP
浅谈PHP命令执行php文件需要注意的问题
Dec 16 PHP
PHP实现RTX发送消息提醒的实例代码
Jan 03 PHP
PHP守护进程化在C和PHP环境下的实现
Nov 21 PHP
PHP实现倒计时功能
Nov 16 PHP
PHP判断是否是json字符串
Apr 01 #PHP
php TP5框架生成二维码链接
Apr 01 #PHP
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
Apr 01 #PHP
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
Apr 01 #PHP
PHP控制循环操作的时间
Apr 01 #PHP
php字符串倒叙
Apr 01 #PHP
Memcached介绍及php-memcache扩展安装
You might like
PHP 读取和编写 XML
2014/11/19 PHP
phpstorm配置Xdebug进行调试PHP教程
2014/12/01 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
Yii针对添加行的增删改查操作示例
2016/10/18 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
一种JavaScript的设计模式
2006/11/22 Javascript
jquery ready()的几种实现方法小结
2010/06/18 Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
2014/07/29 Javascript
jquery实现表格本地排序的方法
2015/03/11 Javascript
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
2017/04/10 jQuery
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
你可能不知道的CORS跨域资源共享
2019/03/13 Javascript
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
H5 js点击按钮复制文本到粘贴板
2020/11/19 Javascript
python实现问号表达式(?)的方法
2013/11/27 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
python的socket编程入门
2018/01/29 Python
浅谈Python中的私有变量
2018/02/28 Python
对命令行模式与python交互模式介绍
2018/05/12 Python
python读取文本绘制动态速度曲线
2018/06/21 Python
对python当中不在本路径的py文件的引用详解
2018/12/15 Python
python正则表达式匹配[]中间为任意字符的实例
2018/12/25 Python
Python从函数参数类型引出元组实例分析
2019/05/28 Python
Python基础学习之函数方法实例详解
2019/06/18 Python
Python列表与元组的异同详解
2019/07/02 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
利用Python如何画一颗心、小人发射爱心
2021/02/21 Python
美味咖啡的顶级烘焙师:Cafe Britt
2018/03/15 全球购物
Redbubble法国:由独立艺术家设计的独特产品
2019/01/08 全球购物
选秀节目策划方案
2014/06/06 职场文书
关于运动会广播稿200字
2014/10/08 职场文书
导游词之开封禹王台风景区
2019/12/02 职场文书
导游词之无锡东林书院
2019/12/11 职场文书
浅析NIO系列之TCP
2021/06/15 Java/Android