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 相关文章推荐
拼音码表的生成
Oct 09 PHP
PHP 高手之路(一)
Oct 09 PHP
用PHP获取Google AJAX Search API 数据的代码
Mar 12 PHP
PHP提示Notice: Undefined variable的解决办法
Nov 24 PHP
探讨php中header的用法详解
Jun 07 PHP
将php数组输出html表格的方法
Feb 24 PHP
微信公众号开发之微信公共平台消息回复类实例
Nov 14 PHP
php使用cookie保存用户登录的用户名实例
Jan 26 PHP
PHP加密解密类实例分析
Apr 20 PHP
php array_map使用自定义的函数处理数组中的每个值
Oct 26 PHP
php实现当前页面点击下载文件的实例代码
Nov 16 PHP
laravel 获取当前url的别名方法
Oct 11 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
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
php查找任何页面上的所有链接的方法
2013/12/03 PHP
找到一点可怜的关于dojo资料,谢谢作者!
2006/12/06 Javascript
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
2010/03/23 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
2014/05/28 Javascript
jquery单选框radio绑定click事件实现方法
2015/01/14 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
修改js confirm alert 提示框文字的简单实例
2016/06/10 Javascript
微信小程序版翻牌小游戏
2018/01/26 Javascript
mpvue实现左侧导航与右侧内容的联动
2019/10/21 Javascript
简述Vue中容易被忽视的知识点
2019/12/09 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
2020/02/11 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
在Python上基于Markov链生成伪随机文本的教程
2015/04/17 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
使用Python3 编写简单信用卡管理程序
2016/12/21 Python
Python实战小程序利用matplotlib模块画图代码分享
2017/12/09 Python
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
python3 图片referer防盗链的实现方法
2018/03/12 Python
python ftp 按目录结构上传下载的实现代码
2018/09/12 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
Django框架使用内置方法实现登录功能详解
2019/06/12 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
Simons官方网站:加拿大时尚零售商
2020/02/20 全球购物
CLR与IL分别是什么含义
2016/08/23 面试题
升国旗仪式主持词
2014/03/19 职场文书
学生会副主席竞聘书
2014/03/31 职场文书
2014年志愿者工作总结
2014/11/20 职场文书
毕业设计论文致谢词
2015/05/14 职场文书
婚礼男方父母答谢词
2015/09/29 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang
Python入门之使用pandas分析excel数据
2021/05/12 Python