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 11 PHP
php笔记之常用文件操作
Oct 12 PHP
php缓存技术详细总结
Aug 07 PHP
模板引擎smarty工作原理以及使用示例
May 25 PHP
thinkphp循环结构用法实例
Nov 24 PHP
php字符串函数学习之substr()
Mar 27 PHP
php给图片添加文字水印方法汇总
Aug 27 PHP
PHP网站建设的流程与步骤分享
Sep 25 PHP
浅谈php中urlencode与rawurlencode的区别
Sep 05 PHP
laravel框架 api自定义全局异常处理方法
Oct 11 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
Oct 30 PHP
thinkphp框架类库扩展操作示例
Nov 26 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
phpMyadmin 用户权限中英对照
2010/04/02 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
JavaScript错误处理
2015/02/03 Javascript
JavaScript图片轮播代码分享
2015/07/31 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
Javascript中的神器——Promise
2017/02/08 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
2017/02/09 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
2017/05/25 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
python使用Image处理图片常用技巧分析
2015/06/01 Python
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
python学习必备知识汇总
2017/09/08 Python
Python 监测文件是否更新的方法
2019/06/10 Python
在OpenCV里实现条码区域识别的方法示例
2019/12/04 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
Python使用Chrome插件实现爬虫过程图解
2020/06/09 Python
Nike比利时官网:Nike.com (BE)
2019/02/07 全球购物
.net笔试题
2014/03/03 面试题
市场开发与营销专业求职信
2013/12/31 职场文书
幼儿园小班教师寄语
2014/04/03 职场文书
2015年社区矫正工作总结
2015/04/21 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
导游词之吉林花园山
2019/10/17 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
Opencv实现二维直方图的计算及绘制
2021/07/21 Python
直播实况, OMG破敌三路五十分钟大战神技局摩托车
2022/04/01 DOTA
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS