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 相关文章推荐
BBS(php &amp; mysql)完整版(五)
Oct 09 PHP
php date与gmdate的获取日期的区别
Feb 08 PHP
php设计模式 Composite (组合模式)
Jun 26 PHP
浅谈apache和nginx的rewrite的区别
Feb 22 PHP
解析php中session的实现原理以及大网站应用应注意的问题
Jun 17 PHP
解析PHP正则提取或替换img标记属性
Jun 26 PHP
PHP中的Streams详细介绍
Nov 12 PHP
php使用ereg验证文件上传的方法
Dec 16 PHP
php获取英文姓名首字母的方法
Jul 13 PHP
Laravel+jQuery实现AJAX分页效果
Sep 14 PHP
PHP获取链表中倒数第K个节点的方法
Jan 18 PHP
PHP中有关长整数的一些操作教程
Sep 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
关于PHP中的Class的几点个人看法
2006/10/09 PHP
强烈推荐:php.ini中文版(2)
2006/10/09 PHP
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
PHP实现的多彩标签效果代码分享
2014/08/21 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
5 种JavaScript编码规范
2018/01/30 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
Python中的pprint折腾记
2015/01/21 Python
Python Logging 日志记录入门学习
2018/06/02 Python
python中比较两个列表的实例方法
2019/07/04 Python
用Python调用win命令行提高工作效率的实例
2019/08/14 Python
FFrpc python客户端lib使用解析
2019/08/24 Python
python 的topk算法实例
2020/04/02 Python
pytorch中index_select()的用法详解
2021/01/06 Python
Html5自定义字体解决方法
2019/10/09 HTML / CSS
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
介绍一下Java的安全机制
2012/06/28 面试题
铭万公司.net面试题笔试题
2014/07/20 面试题
高三自我评价
2014/02/01 职场文书
读群众路线心得体会
2014/03/07 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
家长对孩子的寄语
2015/02/26 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
张丽莉事迹观后感
2015/06/16 职场文书
师范生见习总结范文
2015/06/23 职场文书
运动会主持人开幕词
2016/03/04 职场文书
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL