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初学者最感迷茫的问题小结
Mar 27 PHP
纯php打造的tab选项卡效果代码(不用js)
Dec 29 PHP
PHP的SQL注入实现(测试代码安全不错)
Feb 27 PHP
rephactor 优秀的PHP的重构工具
Jun 09 PHP
php适配器模式介绍
Aug 14 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
Jul 28 PHP
[原创]php获取数组中键值最大数组项的索引值
Mar 17 PHP
php递归遍历多维数组的方法
Apr 18 PHP
php实现用已经过去多长时间的方式显示时间
Jun 05 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
PHP实现浏览器中直接输出图片的方法示例
Mar 14 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面向对象全攻略 (四)构造方法与析构方法
2009/09/30 PHP
PHP7扩展开发教程之Hello World实现方法示例
2017/08/03 PHP
PHP设计模式之模板模式定义与用法详解
2018/12/20 PHP
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
Javascript验证上传图片大小[前台处理]
2014/07/18 Javascript
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
jQuery实现元素拖拽并cookie保存顺序的方法
2016/02/20 Javascript
如何检测JavaScript的各种类型
2016/07/30 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
简单谈谈React中的路由系统
2017/07/25 Javascript
echart简介_动力节点Java学院整理
2017/08/11 Javascript
微信小程序版翻牌小游戏
2018/01/26 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
微信小程序数据分析之自定义分析的实现
2018/08/17 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
利用Python如何实现数据驱动的接口自动化测试
2018/05/11 Python
如何用python整理附件
2018/05/13 Python
jupyter notebook tensorflow打印device信息实例
2020/04/20 Python
Python实现弹球小游戏
2020/08/01 Python
使用tensorflow进行音乐类型的分类
2020/08/14 Python
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
2015/07/24 面试题
兴趣小组活动总结
2014/05/05 职场文书
写得不错的求职信范文
2014/07/11 职场文书
工人先锋号申报材料
2014/12/29 职场文书
对外汉语教师推荐信
2015/03/27 职场文书
焦点访谈观后感
2015/06/11 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书