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 相关文章推荐
ftp类(example.php)
Oct 09 PHP
PHP4与PHP3中一个不兼容问题的解决方法
Oct 09 PHP
php md5下16位和32位的实现代码
Apr 09 PHP
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
Mar 26 PHP
PHP合并静态文件详解
Nov 14 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
Jan 28 PHP
PHP中$_SERVER使用说明
Jul 05 PHP
php判断linux下程序问题实例
Jul 09 PHP
php提交post数组参数实例分析
Dec 17 PHP
PHP mysql事务问题实例分析
Jan 18 PHP
PHP中key和current,next的联合运用实例分析
Mar 29 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
Nov 20 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中邮箱地址正则表达式实现与详解
2012/04/24 PHP
使用PHP备份MYSQL数据的多种方法
2014/01/15 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
PHP判断浏览器、判断语言代码分享
2015/03/05 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
PHP实现创建微信自定义菜单的方法示例
2017/07/14 PHP
js 判断checkbox是否选中的操作方法
2012/11/09 Javascript
JavaScript实现弹出子窗口并传值给父窗口
2014/12/18 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
js使用post 方式打开新窗口
2015/02/26 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
图文详解vue框架安装步骤
2019/02/12 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
Linux下使用python调用top命令获得CPU利用率
2015/03/10 Python
python3使用PyMysql连接mysql数据库实例
2017/02/07 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
python实现二分查找算法
2020/09/18 Python
Python pip 常用命令汇总
2020/10/19 Python
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
英国折扣高尔夫商店:Discount Golf Store
2019/11/19 全球购物
国际花店:Pickup Flowers
2020/04/10 全球购物
医院检讨书范文
2014/02/01 职场文书
新年晚会主持词
2014/03/24 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
5人制售《绝地求生》游戏外挂获利500多万元 被判刑
2022/03/31 其他游戏
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS