| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 15156 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.gdata.spreadsheets">
- <title>Google Tabellenkalkulation verwenden</title>
- <para>
- Die Google Tabellenkalkulations Daten API erlaubt es Client Anwendungen Inhalte von Tabellenkalkulationen
- zu sehen und Inhalte von Tabellenkalkulationen in der Form von Google Daten API 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 API.
- </para>
- <sect2 id="zend.gdata.spreadsheets.creating">
- <title>Eine Tabellenkalkulation erstellen</title>
- <para>
- Die Tabellenkalkulations Daten API 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
- <code>getSpreadsheetFeed</code> 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 role="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 role="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 (<code>$feed->entries</code>), 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 XML 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 <code>getListFeed</code>
- Methode des Tabellenkalkulations Services verwendet werden.
- </para>
- <programlisting role="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 <code>$listfeed</code>
- repräsentiert eine Antwort vom Server. Neben anderen Dingen enthält dieser Feed ein Array von
- <classname>Zend_Gdata_Spreadsheets_ListEntry</classname> Objekten (<code>$listFeed->entries</code>),
- wobei jedes eine einzelne Zeile in einem Arbeitsblatt repräsentiert.
- </para>
- <para>
- Jeder <classname>Zend_Gdata_Spreadsheets_ListEntry</classname> enthält ein Array, <code>custom</code>,
- welches die Daten für die Zeile enthält. Dieses Array kann extrahiert und angezeigt werden:
- </para>
- <programlisting role="php"><![CDATA[
- $rowData = $listFeed->entries[1]->getCustom();
- foreach($rowData as $customEntry) {
- echo $customEntry->getColumnName() . " = " . $customEntry->getText();
- }
- ]]></programlisting>
- <para>
- Eine alternative Version dieses Arrays, <code>customByName</code>, 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 role="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 true gesetzt werden:
- </para>
- <programlisting role="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 <code>orderby</code> Wert des
- <classname>Zend_Gdata_Spreadsheets_ListQuery</classname> Objekts auf
- <code>column:<Der Header dieser Spalte></code> gesetzt werden.
- </para>
- </sect3>
- <sect3 id="zend.gdata.spreadsheets.listfeeds.sq">
- <title>Eine strukturierte Abfrage senden</title>
- <para>
- Der <code>sq</code> 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ß <code>sq</code>
- wie folgt gesetzt werden:
- </para>
- <programlisting role="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
- <code>insertRow</code> Methode des Tabellenkalkulations Services.
- </para>
- <programlisting role="php"><![CDATA[
- $insertedListEntry = $spreadsheetService->insertRow($rowData,
- $spreadsheetKey,
- $worksheetId);
- ]]></programlisting>
- <para>
- Der <code>$rowData</code> 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 <code>updateRow</code> Methode des Tabellenkalkulations Services
- aktualisiert werden.
- </para>
- <programlisting role="php"><![CDATA[
- $updatedListEntry = $spreadsheetService->updateRow($oldListEntry,
- $newRowData);
- ]]></programlisting>
- <para>
- Der <code>$oldListEntry</code> Parameter enthält den Listeneintrag der aktualisiert werden soll.
- <code>$newRowData</code> 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 <code>deleteRow</code> auf dem
- <classname>Zend_Gdata_Spreadsheets</classname> Objekt mit dem bestehenden Eintrag aufgerufen werden, der
- gelöscht werden soll:
- </para>
- <programlisting role="php"><![CDATA[
- $spreadsheetService->deleteRow($listEntry);
- ]]></programlisting>
- <para>
- Alternativ kann die <code>delete</code> Methode des Eintrags selbst aufgerufen werden:
- </para>
- <programlisting role="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 <code>getCellFeed</code> Methode des
- Tabellenkalkulations Services verwendet werden.
- </para>
- <programlisting role="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
- <code>$cellFeed</code> eine Antwort vom Server. Neben anderen Dingen enthält dieser Feed ein
- Array von <classname>Zend_Gdata_Spreadsheets_CellEntry</classname> Objekten
- (<code>$cellFeed>entries</code>), von denen jeder eine einzelne Zelle in einem Arbeitsblatt
- repräsentiert. Diese Information kann angezeigt werden:
- </para>
- <programlisting role="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 role="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ß <code>updateCell</code> mit der Zeile, Spalte und
- dem neuen Wert der Zelle, aufgerufen werden.
- </para>
- <programlisting role="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:
- <code>updateCell</code> muß verwedet werden um Daten in einer Zelle zu verändern, selbst wenn
- diese Zelle leer ist.
- </para>
- </sect3>
- </sect2>
- </sect1>
|