| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.gdata.spreadsheets">
- <title>Google Tabellenkalkulation verwenden</title>
- <para>
- Die Google Tabellenkalkulations Daten <acronym>API</acronym> erlaubt es Client Anwendungen
- Inhalte von Tabellenkalkulationen zu sehen und Inhalte von Tabellenkalkulationen in der form
- von Google Daten <acronym>API</acronym> Feeds zu aktualisieren. Die eigene Client Anwendung
- kann eine Liste von Tabellenkalkulationen eines Benutzer anfragen, Inhalte eines bestehenden
- Arbeitsblatts der Tabellenkalkulation bearbeiten oder löschen, und den Inhalt eines
- bestehenden Arbeitsblatt der Tabellenkalkulation abfragen.
- </para>
- <para>
- Siehe <ulink
- url="http://code.google.com/apis/spreadsheets/overview.html">http://code.google.com/apis/spreadsheets/overview.html</ulink>
- für weitere Informationen über die Google's Tabellenkalkulations <acronym>API</acronym>.
- </para>
- <sect2 id="zend.gdata.spreadsheets.creating">
- <title>Eine Tabellenkalkulation erstellen</title>
- <para>
- Die Tabellenkalkulations Daten <acronym>API</acronym> bietet aktuell noch keinen Weg um
- eine Tabellenkalkulation programmtechnisch zu erstellen oder zu löschen.
- </para>
- </sect2>
- <sect2 id="zend.gdata.spreadsheets.listspreadsheets">
- <title>Eine Liste von Tabellenkalkulationen erhalten</title>
- <para>
- Man kann eine Liste von Tabellenkalkulationen für einen bestimmten Benutzer erhalten
- indem die <methodname>getSpreadsheetFeed()</methodname> Methode des
- Tabellenkalkulationsservices verwendet wird. Der Service wird ein
- <classname>Zend_Gdata_Spreadsheets_SpreadsheetFeed</classname> Objekt zurückgeben das
- eine Liste von Tabellenkalkulationen enthält die mit dem authentifizierten Benutzer
- authentifiziert sind.
- </para>
- <programlisting language="php"><![CDATA[
- $service = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME;
- $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
- $spreadsheetService = new Zend_Gdata_Spreadsheets($client);
- $feed = $spreadsheetService->getSpreadsheetFeed();
- ]]></programlisting>
- </sect2>
- <sect2 id="zend.gdata.spreadsheets.listworksheets">
- <title>Eine Liste von Arbeitsblättern erhalten</title>
- <para>
- Eine gegebene Tabellenkalkulation kann mehrere Arbeitsblätter enthalten. Für jedes
- Arbeitsblass gibt es einen Arbeitsblatt Metafeed der alle Arbeitsblätter in dieser
- Tabellenkalkulation auflistet.
- </para>
- <para>
- Mit der Schlüssel der Tabellenkalkulation von der <id> des
- <classname>Zend_Gdata_Spreadsheets_SpreadsheetEntry</classname> Objekts das man bereits
- empfangen hat, kann mein einen Feed holen der eine Liste von Arbeitsblättern enthält die
- mit dieser Tabellenkalkulation assoziiert sind.
- </para>
- <programlisting language="php"><![CDATA[
- $query = new Zend_Gdata_Spreadsheets_DocumentQuery();
- $query->setSpreadsheetKey($spreadsheetKey);
- $feed = $spreadsheetService->getWorksheetFeed($query);
- ]]></programlisting>
- <para>
- Der sich ergebende <classname>Zend_Gdata_Spreadsheets_WorksheetFeed</classname>
- Objektfeed repräsentiert die Antwort des Servers. Neben anderen Dingen enthält dieser
- Feed eine Liste von <classname>Zend_Gdata_Spreadsheets_WorksheetEntry </classname>
- Objekten (<command>$feed->entries</command>), wobei jedes ein einzelnes Arbeitsblatt
- repräsentiert.
- </para>
- </sect2>
- <sect2 id="zend.gdata.spreadsheets.listfeeds">
- <title>Mit listen-basierenden Feeds interagieren</title>
- <para>
- Ein gegebenes Arbeitsblatt enthält generell mehrere Zeilen, wobei jede mehrere Zellen
- enthält. Man kann Daten vom Arbeitsblatt entweder als listen-basierenden Feed anfragen,
- in dem jeder Eintrag eine Zeile repräsentiert, oder als zellen-basierenden Feed, in dem
- jeder Eintrag eine einzelne Zelle repräsentiert. Für Informationen über
- zellen-basierende Feeds kann auch unter <link
- linkend="zend.gdata.spreadsheets.cellfeeds">Interaktion mit zellen-basierenden
- Feeds</link> nachgesehen werden.
- </para>
- <para>
- Die folgenden Sektionen beschreiben wie man einen Listen basierender Feed erhält, eine
- Zeile zu einem Arbeitsblatt hinzufügt, und Abfragen mit verschiedenen Abfrage Parametern
- sendet.
- </para>
- <para>
- Der Listenfeed macht einige Annahmen darüber wie die Daten in der Tabellenkalkulation
- ausgelegt sind.
- </para>
- <para>
- Im speziellen, behandelt der Listenfeed die erste Zeile des Arbeitsblattes als
- Kopfzeile; Tabellenkalkulationen erstellen dynamisch <acronym>XML</acronym> Elemente
- welche nach dem Inhalt der Kopfzeilen-Zellen benannt sind. Benutzer welche Gdata Feeds
- anbieten wollen, sollten keine andere Daten als Spaltenheader in der ersten Zeile eines
- Arbeitsblattes ablegen.
- </para>
- <para>
- Der Listenfeed enthält alle Zeilen nach der ersten Zeile bis zur ersten leeren Zeile.
- Die erste leere Zeile terminiert das Datenset. Wenn angenommene Daten nicht in einem
- Feed erscheinen, muß das Arbeitsblatt manuell darauf geprüft werden ob eine unerwartete
- leere Zeile in der Mitte der Daten vorhanden ist. Im speziellen wird der Listenfeed,
- wenn die zweite Zeile der Tabellenkalkulation leer ist, keine Daten enthalten.
- </para>
- <para>
- Eine Zeile in einem Listenfeed ist soviele Spalten breit wie das Arbeitsblatt selbst.
- </para>
- <sect3 id="zend.gdata.spreadsheets.listfeeds.get">
- <title>Einen listen-basierenden Feed erhalten</title>
- <para>
- Um einen Listenfeed eines Arbeitsblattes zu erhalten, kann die
- <methodname>getListFeed()</methodname> Methode des Tabellenkalkulations Services
- verwendet werden.
- </para>
- <programlisting language="php"><![CDATA[
- $query = new Zend_Gdata_Spreadsheets_ListQuery();
- $query->setSpreadsheetKey($spreadsheetKey);
- $query->setWorksheetId($worksheetId);
- $listFeed = $spreadsheetService->getListFeed($query);
- ]]></programlisting>
- <para>
- Das sich ergebende <classname>Zend_Gdata_Spreadsheets_ListFeed</classname> Objekt
- <varname>$listfeed</varname> repräsentiert eine Antwort vom Server. Neben anderen
- Dingen enthält dieser Feed ein Array von
- <classname>Zend_Gdata_Spreadsheets_ListEntry</classname> Objekten
- (<command>$listFeed->entries</command>), wobei jedes eine einzelne Zeile in einem
- Arbeitsblatt repräsentiert.
- </para>
- <para>
- Jeder <classname>Zend_Gdata_Spreadsheets_ListEntry</classname> enthält ein Array,
- <property>custom</property>, welches die Daten für die Zeile enthält. Dieses Array
- kann extrahiert und angezeigt werden:
- </para>
- <programlisting language="php"><![CDATA[
- $rowData = $listFeed->entries[1]->getCustom();
- foreach($rowData as $customEntry) {
- echo $customEntry->getColumnName() . " = " . $customEntry->getText();
- }
- ]]></programlisting>
- <para>
- Eine alternative Version dieses Arrays, <property>customByName</property>, erlaubt
- den direkten Zugriff zu dem Eintrag einer Zelle durch den Namen. Das ist üblich,
- wenn man versucht auf einen speziellen Header zuzugreifen:
- </para>
- <programlisting language="php"><![CDATA[
- $customEntry = $listFeed->entries[1]->getCustomByName('my_heading');
- echo $customEntry->getColumnName() . " = " . $customEntry->getText();
- ]]></programlisting>
- </sect3>
- <sect3 id="zend.gdata.spreadsheets.listfeeds.reverse">
- <title>Umgekehrt-sortierte Zeilen</title>
- <para>
- Standardmäßig werden die Zeilen im Feed in der gleichen Reihenfolge angezeigt wie in
- den entsprechenden Zeilen im GUI; das ist die Reihenfolge anhand der Zeilennummer.
- Um Zeilen in einer umgekehrten Reihenfolge zu erhalten, muß die reverse Eigenschaft
- des <classname>Zend_Gdata_Spreadsheets_ListQuery</classname> Objektes auf
- <constant>TRUE</constant> gesetzt werden:
- </para>
- <programlisting language="php"><![CDATA[
- $query = new Zend_Gdata_Spreadsheets_ListQuery();
- $query->setSpreadsheetKey($spreadsheetKey);
- $query->setWorksheetId($worksheetId);
- $query->setReverse('true');
- $listFeed = $spreadsheetService->getListFeed($query);
- ]]></programlisting>
- <para>
- Es ist zu beachten, das wenn nach einer speziellen Spalte sortiert (oder umgekehrt
- sortiert) werden soll, statt nach der Position im Arbeitsblatt, kann der
- <property>orderby</property> Wert des
- <classname>Zend_Gdata_Spreadsheets_ListQuery</classname> Objekts auf
- <emphasis>column:<Der Header dieser Spalte></emphasis> gesetzt werden.
- </para>
- </sect3>
- <sect3 id="zend.gdata.spreadsheets.listfeeds.sq">
- <title>Eine strukturierte Abfrage senden</title>
- <para>
- Der <property>sq</property> Wert von
- <classname>Zend_Gdata_Spreadsheets_ListQuery</classname> kann gesetzt werden um
- einen Feed mit Einträgen zu erzeugen die ein spezielles Kriterium erfüllen.
- Angenommen, man hat ein Arbeitsblatt das personelle Daten enthält, in denen jede
- Zeile Informationen über eine einzelne Person repräsentiert, und man will alle
- Zeilen empfangen will in denen der Name der Person "John" ist, und das Alter der
- Person über 25. Um das tu tun, muß <property>sq</property> wie folgt gesetzt werden:
- </para>
- <programlisting language="php"><![CDATA[
- $query = new Zend_Gdata_Spreadsheets_ListQuery();
- $query->setSpreadsheetKey($spreadsheetKey);
- $query->setWorksheetId($worksheetId);
- $query->setSpreadsheetQuery('name=John and age>25');
- $listFeed = $spreadsheetService->getListFeed($query);
- ]]></programlisting>
- </sect3>
- <sect3 id="zend.gdata.spreadsheets.listfeeds.addrow">
- <title>Hinzufügen einer Zeile</title>
- <para>
- Zeilen können zu einer Tabellenkalkulation hinzugefügt werden durch Verendung der
- <methodname>insertRow()</methodname> Methode des Tabellenkalkulations Services.
- </para>
- <programlisting language="php"><![CDATA[
- $insertedListEntry = $spreadsheetService->insertRow($rowData,
- $spreadsheetKey,
- $worksheetId);
- ]]></programlisting>
- <para>
- Der <varname>$rowData</varname> Parameter enthält ein Array von Spaltenschlüssel zu
- Datenwerten. Die Methode gibt ein
- <classname>Zend_Gdata_Spreadsheets_SpreadsheetsEntry</classname> Objekt zurück
- welches die eingefügte Zeile repräsentiert.
- </para>
- <para>
- Die Tabellenkalkulation fügt die neue Zeile unmittelbar nach der letzten Zeile ein
- die in dem listen-basierenden Feed erscheint, was bedeutet unmittelbar vor der
- ersten komplett leeren Zeile.
- </para>
- </sect3>
- <sect3 id="zend.gdata.spreadsheets.listfeeds.editrow">
- <title>Eine Zeile bearbeiten</title>
- <para>
- Sobald ein <classname>Zend_Gdata_Spreadsheets_ListEntry</classname> Objekt geholt
- wird, können diese Zeilen durch die Verwendung der
- <methodname>updateRow()</methodname> Methode des Tabellenkalkulations Services
- aktualisiert werden.
- </para>
- <programlisting language="php"><![CDATA[
- $updatedListEntry = $spreadsheetService->updateRow($oldListEntry,
- $newRowData);
- ]]></programlisting>
- <para>
- Der <varname>$oldListEntry</varname> Parameter enthält den Listeneintrag der
- aktualisiert werden soll. <varname>$newRowData</varname> enthält ein Array von
- Spaltenschlüssel zu Datenwerten, die als neue Zeilendaten verwendet werden. Diese
- Methode gibt ein <classname>Zend_Gdata_Spreadsheets_SpreadsheetsEntry</classname>
- Objekt zurück welches die aktualisierte Zeile repräsentiert.
- </para>
- </sect3>
- <sect3 id="zend.gdata.spreadsheets.listfeeds.deleterow">
- <title>Eine Zeile löschen</title>
- <para>
- Um eine Zeile zu löschen muß einfach <methodname>deleteRow()</methodname> auf dem
- <classname>Zend_Gdata_Spreadsheets</classname> Objekt mit dem bestehenden Eintrag
- aufgerufen werden, der gelöscht werden soll:
- </para>
- <programlisting language="php"><![CDATA[
- $spreadsheetService->deleteRow($listEntry);
- ]]></programlisting>
- <para>
- Alternativ kann die <methodname>delete()</methodname> Methode des Eintrags selbst
- aufgerufen werden:
- </para>
- <programlisting language="php"><![CDATA[
- $listEntry->delete();
- ]]></programlisting>
- </sect3>
- </sect2>
- <sect2 id="zend.gdata.spreadsheets.cellfeeds">
- <title>Mit zellen-basierenden Feeds interagieren</title>
- <para>
- In einem zellen-basierenden Feed repräsentiert jeder Eintrag eine einzelne Zelle.
- </para>
- <para>
- Es wird nicht empfohlen mit beiden, einem zellen-basierenden Feed und einem
- listen-basierenden Feed für das gleiche Arbeitsblatt zur selben Zeit zu interagieren.
- </para>
- <sect3 id="zend.gdata.spreadsheets.cellfeeds.get">
- <title>Einen zellen-basierenden Feed erhalten</title>
- <para>
- Um einen Zellen Feed des Arbeitsblatt zu erhalten muß die
- <methodname>getCellFeed()</methodname> Methode des Tabellenkalkulations Services
- verwendet werden.
- </para>
- <programlisting language="php"><![CDATA[
- $query = new Zend_Gdata_Spreadsheets_CellQuery();
- $query->setSpreadsheetKey($spreadsheetKey);
- $query->setWorksheetId($worksheetId);
- $cellFeed = $spreadsheetService->getCellFeed($query);
- ]]></programlisting>
- <para>
- Im resultierenden <classname>Zend_Gdata_Spreadsheets_CellFeed</classname> Objekt
- repräsentiert <varname>$cellFeed</varname> eine Antwort vom Server. Neben anderen
- Dingen enthält dieser Feed ein Array von
- <classname>Zend_Gdata_Spreadsheets_CellEntry</classname> Objekten
- (<command>$cellFeed>entries</command>), von denen jeder eine einzelne Zelle in einem
- Arbeitsblatt repräsentiert. Diese Information kann angezeigt werden:
- </para>
- <programlisting language="php"><![CDATA[
- foreach($cellFeed as $cellEntry) {
- $row = $cellEntry->cell->getRow();
- $col = $cellEntry->cell->getColumn();
- $val = $cellEntry->cell->getText();
- echo "$row, $col = $val\n";
- }
- ]]></programlisting>
- </sect3>
- <sect3 id="zend.gdata.spreadsheets.cellfeeds.cellrangequery">
- <title>Eine Zellen-Bereichs Abfrage senden</title>
- <para>
- Angenommen man will die Zellen der ersten Spalte des Arbeitsblattes empfangen. Man
- kann einen Zellen Feed abfragen der nur diese Spalte enthält und geht hierbei wie
- folgt vor:
- </para>
- <programlisting language="php"><![CDATA[
- $query = new Zend_Gdata_Spreadsheets_CellQuery();
- $query->setMinCol(1);
- $query->setMaxCol(1);
- $query->setMinRow(2);
- $feed = $spreadsheetService->getCellsFeed($query);
- ]]></programlisting>
- <para>
- Das fragt alle Daten in der Spalte 1, beginnend mit der Zeile 2, ab.
- </para>
- </sect3>
- <sect3 id="zend.gdata.spreadsheets.cellfeeds.updatecell">
- <title>Den Inhalt einer Zelle ändern</title>
- <para>
- Um den Inhalt einer Zelle zu ändern, muß <methodname>updateCell()</methodname> mit
- der Zeile, Spalte und dem neuen Wert der Zelle, aufgerufen werden.
- </para>
- <programlisting language="php"><![CDATA[
- $updatedCell = $spreadsheetService->updateCell($row,
- $col,
- $inputValue,
- $spreadsheetKey,
- $worksheetId);
- ]]></programlisting>
- <para>
- Die neuen Daten werden in der spezifizierten Zelle im Arbeitsblatt plaziert. Wenn
- die spezifizierte Zelle bereits Daten enthält, werden diese überschrieben. Beachte:
- <methodname>updateCell()</methodname> muß verwedet werden um Daten in einer Zelle zu
- verändern, selbst wenn diese Zelle leer ist.
- </para>
- </sect3>
- </sect2>
- </sect1>
|