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 if 想到的些问题
Mar 22 PHP
PHP 时间转换Unix时间戳代码
Jan 22 PHP
php与mysql建立连接并执行SQL语句的代码
Jul 04 PHP
ajax php传递和接收变量实现思路及代码
Dec 19 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
May 06 PHP
php的SimpleXML方法读写XML接口文件实例解析
Jun 16 PHP
ThinkPHP之getField详解
Jun 20 PHP
跟我学Laravel之配置Laravel
Oct 15 PHP
PHP根据图片色界在不同位置加水印的方法
Jul 01 PHP
无需数据库在线投票调查php代码
Jul 20 PHP
PHP实现简易图形计算器
Aug 28 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/09/19 PHP
ThinkPHP表单数据智能写入create方法实例分析
2015/09/27 PHP
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
[04:40]DOTA2-DPC中国联赛1月26日Recap集锦
2021/03/11 DOTA
简单解析Django框架中的表单验证
2015/07/17 Python
全面解析Python的While循环语句的使用方法
2015/10/13 Python
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
迪卡侬印度官网:购买所有体育用品
2017/06/24 全球购物
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
MYSQL基础面试题
2012/05/13 面试题
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
《自然之道》教学反思
2014/02/11 职场文书
工程师岗位职责规定
2014/02/26 职场文书
承诺书范文
2014/06/03 职场文书
食品质检员岗位职责
2015/04/08 职场文书
紫日观后感
2015/06/05 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书
Django使用redis配置缓存的方法
2021/06/01 Redis