您的位置:首页技术开发java教程 → 使用PHP集成Google Spreadsheets 数据

使用PHP集成Google Spreadsheets 数据

时间:2011/1/24 9:33:50来源:ibm作者:佚名我要评论(0)

 Google Spreadsheets 是著名的基于云的电子表格应用程序。Web 应用程序开发人员可以通过 Google Spreadsheet Data API 从在线电子表格中访问和搜索数据。本文将介绍 Google Spreadsheets Data API 并在一个 PHP 应用程序中进行演示,解释如何添加、修改和删除电子表格内容的各种元素。

简介

在本文第一部分中,我向您介绍了 Google Spreadsheets Data API,一种允许开发人员使用 Google Spreadsheets 云中托管的用户空间电子表格数据轻松构建新应用程序的 REST API。我解释了电子表格、工作表、列表和单元格提要等基本知识,演示了如何对这些提要使用 Zend Framework 来快速、高效地将电子表格内容推入到一个 PHP 应用程序中。

然而,Google Spreadsheets Data API 不仅仅支持检索和搜索电子表格。在本文的最后一部分中,我将解释如何使用 Data API 远程操作电子表格内容,从一个远程 PHP 应用程序中添加、更新和删除行、单元格、工作表。本文将通过两个示例应用程序来演示所涉及的技巧,分别是使用 Data API 读取 RSS 提要和 SQL 结果集并将它们导入到一个 Google Spreadsheet。

添加工作表

每个电子表格都包含一个或多个工作表,Google Spreadsheets Data API 允许您通过编程方式访问和操作这些工作表。要了解其工作方式,请访问 Google Spreadsheets 服务,登录并创建一个空的电子表格。注意,电子表格键应当可以从 URL 中看到。您的空电子表格应当类似于 图 1。


 图 1. 创建一个新的空电子表格
一个新的空电子表格的屏幕截图

要向电子表格添加一个新的工作表,需要以 Atom 格式生成一个新的工作表条目,然后将该条目 POST 到指定电子表格的工作表 URL 中。考虑 清单 1,其中演示了这一过程。


清单 1. 清单 1. 添加一个新的工作表

<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Creating worksheets</title>
    <style>
    body {
      font-family: Verdana;     
    }
    </style>   
  </head>
  <body>
    <?php
    // load Zend Gdata libraries
    require_once 'Zend/Loader.php';
    Zend_Loader::loadClass('Zend_Gdata_Spreadsheets');
    Zend_Loader::loadClass('Zend_Gdata_ClientLogin');

    // set credentials for ClientLogin authentication
    $user = "someuser@gmail.com";
    $pass = "somepass";

    try {
      // connect to API
      $service = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME;
      $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
      $service = new Zend_Gdata_Spreadsheets($client);

      // get spreadsheet entry
      $ssEntry = $service->getSpreadsheetEntry(
        'https://spreadsheets.google.com/feeds/spreadsheets/ssid');

      // get worksheet feed for this spreadsheet
      $wsFeed = $service->getWorksheetFeed($ssEntry);

      // create new entry
      $doc  = new DOMDocument();
      $doc->formatOutput = true;
      $entry = $doc->createElement('atom:entry');
      $entry->setAttributeNS('http://www.w3.org/2000/xmlns/' ,
        'xmlns:atom', 'http://www.w3.org/2005/Atom');
      $entry->setAttributeNS('http://www.w3.org/2000/xmlns/' ,
        'xmlns:gs', 'http://schemas.google.com/spreadsheets/2006');
      $doc->appendChild($entry);

      // add title, row and column counts
      $title = $doc->createElement('atom:title', 'Jan 2011');
      $entry->appendChild($title);
      $rows = $doc->createElement('gs:rowCount', '10');
      $entry->appendChild($rows);
      $cols = $doc->createElement('gs:colCount', '10');
      $entry->appendChild($cols);

      // insert entry
      $entryResult = $service->insertEntry($doc->saveXML(),
        $wsFeed->getLink('self')->getHref());
      echo 'The ID of the new worksheet entry is: ' . $entryResult->id;

    } catch (Exception $e) {
      die('ERROR: ' . $e->getMessage());
    }
    ?>

  </body>
<html>

首先需要注意的是,Zend_Gdata_Spreadsheets 组件没有提供本地方法来添加或更新工作表。但是仍然可以执行这些操作。您必须手动创建 XML 工作表元素,并使用通用的 insertEntry() 方法将其 POST 到正确的 URL。

清单 1 首先获得对指定电子表格条目的引用,然后获得该条目的工作表提要。接下来,创建一个 DOMDocument 对象来表示实际的条目,然后向其添加元素来指定工作表标题、行数和列数。最后,insertEntry() 方法向工作表提要的 URL 发送 XML 片段,以将修改提交给电子表格。

在执行本脚本并返回到 Google Spreadsheets GUI 后,将看到空的电子表格中出现了一个新的工作表,如 图 2 所示。


图 2. 图 2. 添加了新工作表的电子表格
添加了标签为 'Jan 2011' 的新工作表的电子表格屏幕截图

完成这一任务的另一种方法是创建 Zend_Gdata_Spreadsheets_WorksheetEntry 对象的一个实例,设置它的属性,然后将该条目对象提交给工作表提要 URL。最终的结果是相同的,但是这一种方法更简单一些,因为 Zend_Gdata_Spreadsheets 将负责处理生成工作表条目 XML 等细节。考虑 清单 2,其中演示了生成与 清单 1 等效的输出的替代方法。

相关视频

    没有数据

相关阅读 php输出内容乱码解决方法php批量获取首字母(汉字、数字、英文)我的php文件怎么打开_如何打开php文件的办法破解防盗链图片的php函数php显示错误信息方法如何在IIS7下设置支持PHP程序PHP技巧--通过COM使用ADODB成就PHP高手的五个必经之路

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 myeclipse如何安装插件myeclipse怎么显示代码 myeclipse怎么连接到数据库 myeclipse连接到eclipse没有maven选项怎么办 eclipse没有majava设置cookie教程 java怎么设置cookiejava怎么设置随机数 java设置随机数详细教程

人气排行 java.lang.NullPointerException错误处理方eclipse没有maven选项怎么办 eclipse没有majava环境变量配置方法java中String类主要方法的使用java中创建并初始化字符串方法MyEclipse的注册以及汉化方法图解myeclipse如何安装插件 myeclipse安装插件方一个简单Java发邮件源代码