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 DataGrid 实现代码
Aug 12 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
May 26 PHP
php设计模式 Prototype (原型模式)代码
Jun 26 PHP
php常用Stream函数集介绍
Jun 24 PHP
php轻松实现中英文混排字符串截取
May 28 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
Jun 19 PHP
php将字符串转换成16进制的方法
Mar 17 PHP
php实现统计目录文件大小的函数
Dec 25 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
PHP会话操作之cookie用法分析
Sep 28 PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 PHP
Laravel实现搜索的时候分页并携带参数
Oct 15 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一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
smarty实现多级分类的方法
2014/12/05 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
PHP入门教程之表单与验证实例详解
2016/09/11 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
Laravel框架路由管理简单示例
2019/05/07 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
JavaScript实现自动切换图片代码
2016/10/11 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
详解 vue better-scroll滚动插件排坑
2018/02/08 Javascript
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
nodejs中使用archive压缩文件的实现代码
2019/11/26 NodeJs
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
浅析Python编写函数装饰器
2016/03/18 Python
web.py 十分钟创建简易博客实现代码
2016/04/22 Python
Python3简单实例计算同花的概率代码
2017/12/06 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
Django之路由层的实现
2019/09/09 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
django使用JWT保存用户登录信息
2020/04/22 Python
Django ORM filter() 的运用详解
2020/05/14 Python
python 绘制正态曲线的示例
2020/09/24 Python
初三开学计划书
2014/04/27 职场文书
资助贫困学生倡议书
2014/05/16 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
会计工作检讨书
2015/02/19 职场文书
毕业生个人总结
2015/02/28 职场文书
幼儿园园长个人总结
2015/03/02 职场文书
办公用品质量保证书
2015/05/11 职场文书
技术入股合作协议书
2016/03/21 职场文书