alepane21 / php-google-spreadsheet-client
Google Spreadsheet PHP 客户端 (针对 PHP 5.2.1+ 进行分支开发)
2.2.8
2014-10-27 13:13 UTC
Requires
- php: >=5.2.1
README
此库提供对 Google Spreadsheet API 的简单接口。它是基于 https://github.com/asimlqt/php-google-spreadsheet-client 开发的,已修改为与 PHP 5.2.1+ 兼容。
有几个重要事项需要注意。
- 此库需要有效的 OAuth 访问令牌才能运行,但它不提供生成令牌的方法。Google APIs Client Library for PHP 提供了生成和刷新令牌所需的所有功能,因此复制官方谷歌库将是浪费时间的。
- 您不能使用此库(PHP Google Spreadsheet Client)创建工作表,因为创建工作表不是 Spreadsheet API 的功能,官方 Google 客户端库中已经存在此功能。
我强烈建议您阅读 官方 Google Spreadsheet API 文档,以了解相关概念。
使用方法
安装
使用 composer 是推荐安装方式。
1 - 将 "alepane21/php-google-spreadsheet-client" 添加到项目 composer.json 文件中的依赖项。
{ "require": { "alepane21/php-google-spreadsheet-client": "2.2.*" } }
2 - 下载并安装 Composer。
curl -sS https://getcomposer.org/installer | php
3 - 安装依赖项。
php composer.phar install
4 - 需要Composer的自动加载器。
require 'vendor/autoload.php';
启动
首先,您需要初始化服务请求工厂
$serviceRequest = new Google_Spreadsheet_DefaultServiceRequest($accessToken); Google_Spreadsheet_ServiceRequestFactory::setInstance($serviceRequest);
获取工作表列表
$spreadsheetService = new Google_Spreadsheet_SpreadsheetService(); $spreadsheetFeed = $spreadsheetService->getSpreadsheets();
SpreadsheetFeed 实现 ArrayIterator,因此您可以使用 foreach 循环迭代它,或者可以通过名称检索单个工作表。
$spreadsheet = $spreadsheetFeed->getByTitle('MySpreadsheet');
获取工作表列表
您可以通过调用 getWorksheets() 方法从工作表中检索工作表列表。
$spreadsheetService = new Google_Spreadsheet_SpreadsheetService(); $spreadsheetFeed = $spreadsheetService->getSpreadsheets(); $spreadsheet = $spreadsheetFeed->getByTitle('MySpreadsheet'); $worksheetFeed = $spreadsheet->getWorksheets();
您可以通过循环每个工作表或通过标题获取单个工作表。
$worksheet = $worksheetFeed->getByTitle('Sheet 1');
添加工作表
$spreadsheetService = new Google_Spreadsheet_SpreadsheetService(); $spreadsheetFeed = $spreadsheetService->getSpreadsheets(); $spreadsheet = $spreadsheetFeed->getByTitle('MySpreadsheet'); $spreadsheet->addWorksheet('New Worksheet', 50, 20);
唯一必需的参数是工作表名称,行和列计数是可选的。行的默认值为 100,列的默认值为 10。
删除工作表
$spreadsheetService = new Google_Spreadsheet_SpreadsheetService(); $spreadsheetFeed = $spreadsheetService->getSpreadsheets(); $spreadsheet = $spreadsheetFeed->getByTitle('MySpreadsheet'); $worksheetFeed = $spreadsheet->getWorksheets(); $worksheet = $worksheetFeed->getByTitle('New Worksheet'); $worksheet->delete();
处理基于列表的源
获取基于列表的源
$spreadsheetService = new Google_Spreadsheet_SpreadsheetService(); $spreadsheetFeed = $spreadsheetService->getSpreadsheets(); $spreadsheet = $spreadsheetFeed->getByTitle('MySpreadsheet'); $worksheetFeed = $spreadsheet->getWorksheets(); $worksheet = $worksheetFeed->getByTitle('Sheet 1'); $listFeed = $worksheet->getListFeed();
一旦您有了列表源,您就可以遍历每个条目。
foreach ($listFeed->getEntries() as $entry) { $values = $entry->getValues(); }
getValues() 方法返回一个关联数组,键是列名,值是单元格内容。
添加列表行
$spreadsheetService = new Google_Spreadsheet_SpreadsheetService(); $spreadsheetFeed = $spreadsheetService->getSpreadsheets(); $spreadsheet = $spreadsheetFeed->getByTitle('MySpreadsheet'); $worksheetFeed = $spreadsheet->getWorksheets(); $worksheet = $worksheetFeed->getByTitle('Sheet 1'); $listFeed = $worksheet->getListFeed(); $row = array('name'=>'John', 'age'=>25); $listFeed->insert($row);
更新列表行
$spreadsheetService = new Google_Spreadsheet_SpreadsheetService(); $spreadsheetFeed = $spreadsheetService->getSpreadsheets(); $spreadsheet = $spreadsheetFeed->getByTitle('MySpreadsheet'); $worksheetFeed = $spreadsheet->getWorksheets(); $worksheet = $worksheetFeed->getByTitle('Sheet 1'); $listFeed = $worksheet->getListFeed(); $entries = $listFeed->getEntries(); $listEntry = $entries[0]; $values = $listEntry->getValues(); $values['name'] = 'Joe'; $listEntry->update($values);
向新工作表添加标题
Google Spreadsheet API 不允许在没有分配标题的情况下更新列表行。因此,在您可以使用上述“添加/更新列表行”方法向工作表添加数据之前,您需要先添加标题。
要向工作表添加标题,请使用以下方法
$spreadsheetService = new Google_Spreadsheet_SpreadsheetService(); $spreadsheetFeed = $spreadsheetService->getSpreadsheets(); $spreadsheet = $spreadsheetFeed->getByTitle('MySpreadsheet'); $worksheetFeed = $spreadsheet->getWorksheets(); $worksheet = $worksheetFeed->getByTitle('Sheet 1'); $cellFeed = $worksheet->getCellFeed(); $cellFeed->editCell(1,1, "Row1Col1Header"); $cellFeed->editCell(1,2, "Row1Col2Header"); $cellFeed->editCell(1,3, "Row1Col3Header"); $cellFeed->editCell(1,4, "Row1Col4Header");