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
PHP4实际应用经验篇(5)
Oct 09 PHP
mysql中存储过程、函数的一些问题
Feb 14 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
Apr 26 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
Jun 03 PHP
ThinkPHP的L方法使用简介
Jun 18 PHP
php获取根域名方法汇总
Oct 28 PHP
微信access_token的获取开发示例
Apr 16 PHP
PHP中isset与array_key_exists的区别实例分析
Jun 02 PHP
WordPress中用于获取文章作者与分类信息的方法整理
Dec 17 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
Dec 04 PHP
php + ajax 实现的写入数据库操作简单示例
May 16 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
DedeCMS dede_channeltype表字段注释
2010/04/07 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
PHP array_reverse() 函数原理及实例解析
2020/07/14 PHP
web页面数据展示新想法(json)
2010/06/08 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
javascript折半查找详解
2015/01/26 Javascript
jQuery oLoader实现的加载图片和页面效果
2015/03/14 Javascript
JS实现弹性菜单效果代码
2015/09/07 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
2016/03/01 Javascript
AngularJS 中的Promise --- $q服务详解
2016/09/14 Javascript
vue中appear的用法
2017/08/17 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
2018/07/12 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
nodejs的安装使用与npm的介绍
2019/09/11 NodeJs
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
[02:52]DOTA2新手基础教程 米波
2014/01/21 DOTA
python3设计模式之简单工厂模式
2017/10/17 Python
pyqt5自定义信号实例解析
2018/01/31 Python
python将txt文件读取为字典的示例
2018/12/22 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
django用户登录验证的完整示例代码
2019/07/21 Python
使用CSS3实现input多选框自定义样式的方法示例
2019/07/19 HTML / CSS
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
音乐表演专业毕业生求职信
2013/10/14 职场文书
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
商务专员岗位职责范本
2014/06/29 职场文书
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书
房屋所有权证明
2015/06/19 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书