Heim > Fragen und Antworten > Hauptteil
Ich verwende eine Bibliothek namens OpenTbs, um ODT mit PHP zu erstellen. Ich verwende sie wegen der dynamischen Generierung von Spalten und Zeilen.
Ich weiß, wie man Zeilen und Spalten erstellt, aber ich weiß nicht, wie man sie organisiert.
Lassen Sie mich ein Beispiel hinzufügen:
Also zuerst werde ich das zu meinem Odt hinzufügen,
+-- ---------------------------------------------------+ | Thin | Heavy | Total | +------------------------------------------------------+ | [b.date] | | | +------------------------------------------------------+ | [b.thin; | | | | block=tbs:cell; | | | | parallel=tbs:table] | | | | | | | +------------------------------------------------------+ | [b.heavy] | | | +------------------------------------------------------+ | [b.total] | | | +------------------------------------------------------+
Dann verwende ich im Code:
<?php include_once('tbs_class.php'); include_once('plugins/tbs_plugin_opentbs.php'); $TBS = new clsTinyButStrong; $TBS->Plugin(TBS_INSTALL, OPENTBS_PLUGIN); $TBS->LoadTemplate('template.odt',OPENTBS_ALREADY_UTF8); $data = array( array('date' => '2013-10-13', 'thin' => 156, 'heavy' => 128, 'total' => 284), array('date' => '2013-10-14', 'thin' => 233, 'heavy' => 25, 'total' => 284), array('date' => '2013-10-15', 'thin' => 110, 'heavy' => 412, 'total' => 130), ); $TBS->MergeBlock('b', $data); // $TBS->Plugin(OPENTBS_DEBUG_INFO, true); $output_file_name ="test_download.odt"; $TBS->Show(OPENTBS_DOWNLOAD, $output_file_name); ?>
Ausgabe:
+ --------------------------------------+ | Thin | Heavy | Total | +---------------------------------------+ | 156 | 233 | 110 | +---------------------------------------+ | 128 | 25 | 412 | +---------------------------------------+ | 284 | 284 | 130 | +---------------------------------------+
Alle Nähte sind in Ordnung, aber wenn wir es mit dem Array $data
vergleichen$data = array( array('thin' => 156, 'heavy' => 128, 'total' => 284), array('thin' => 233, 'heavy' => 25, 'total' => 284), array('thin' => 110, 'heavy' => 412, 'total' => 130), );
Sie werden sehen, dass in der ersten Zeile nur thin
| 156 | 233 | 110 |
In der zweiten Zeile wird nur heavy
| 128 | 25 | 412 |
In der dritten Zeile wird nur total
| 284 | 284 | 130 |
Eigentlich sollten solche Inhalte angezeigt werden:
+ --------------------------------------+ | Thin | Heavy | Total | +---------------------------------------+ | 156 | 128 | 284 | +---------------------------------------+ | 233 | 25 | 284 | +---------------------------------------+ | 110 | 412 | 130 | +---------------------------------------+
Dann wurde mir klar, dass es vielleicht das Problem war, sie untereinander zu platzieren. Verwenden Sie es also nicht auf Odt
+-- ----------------------------------------------+ | Thin | Heavy | Total | +-------------------------------------------------+ | [b.thin; | | | | block=tbs:cell; | | | | parallel=tbs:table] | | | +-------------------------------------------------+ | [b.heavy] | | | +-------------------------------------------------+ | [b.total] | | | +-------------------------------------------------+
Ich benutze das
+-- -------------------------------------------+ | Thin | Heavy | Total | +----------------------------------------------+ | [b.thin; | [b.heavy] | [b.total] | | block=tbs:cell; | | | | parallel=tbs:table]| | | | | | | +----------------------------------------------+
Ausgabe:
+----------------------------------------------+ | | | | | | +----------------------------------------------+ | 128 | 25 | 412 | 522 | | +----------------------------------------------+
Wie Sie sehen können, iteriert es nicht gut über das Array und erzeugt leere Spalten und die angezeigten Daten sind zufällig
Wenn also jemand weiß, was daran falsch ist, lasst es mich bitte wissen
Danke!
Aktualisiert
Das ist mir in [r.thin;block=tbs:cell;parallel=tbs:table]
中我使用 cell
而不是 row
Also habe ich versucht, es zu ändern ->
[r.thin;tbs:row;parallel=tbs:table]
Es funktioniert nicht, aber die erste Iteration ist korrekt:
+ --------------------------------------+ | Thin | Heavy | Total | +---------------------------------------+ | 156 | 128 | 284 | +---------------------------------------+
P粉1166544952024-04-07 16:11:53
关于并行功能
,您得到的结果是正确的。
并行功能
执行一种按列合并,而不是按行合并。
对于按行合并,您的模板可能如下所示:
+---------------------------------------------------------------+ | Row number | Thin | Heavy | Total | +---------------------------------------------------------------+ | [b.#] | [b.thin;block=tbs:row] | [b.heavy] | [b.total] | +---------------------------------------------------------------+
对于按列合并,您的模板可能如下所示:
+-- -----------------------+ | Row number [b.#] | +--------------------------+ | [b.thin; | | block=tbs:cell; | | parallel=tbs:table] | +--------------------------+ | [b.heavy] | +--------------------------+ | [b.total] | +--------------------------+