我正在使用一個名為 OpenTbs 的函式庫來使用 PHP 建立 odt,我使用它是因為動態產生列和行。
我知道如何建立行和列,但我不知道如何組織它們。
讓我加入一個例子:
所以首先我會將其添加到我的 odt 中,
+-- ---------------------------------------------------+ | Thin | Heavy | Total | +------------------------------------------------------+ | [b.date] | | | +------------------------------------------------------+ | [b.thin; | | | | block=tbs:cell; | | | | parallel=tbs:table] | | | | | | | +------------------------------------------------------+ | [b.heavy] | | | +------------------------------------------------------+ | [b.total] | | | +------------------------------------------------------+
然後在我將要使用的程式碼中:
<?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); ?>
輸出:
+ --------------------------------------+ | Thin | Heavy | Total | +---------------------------------------+ | 156 | 233 | 110 | +---------------------------------------+ | 128 | 25 | 412 | +---------------------------------------+ | 284 | 284 | 130 | +---------------------------------------+
所有接縫都很好,但是如果我們將其與陣列 $data
進行比較$data = array( array('thin' => 156, 'heavy' => 128, 'total' => 284), array('thin' => 233, 'heavy' => 25, 'total' => 284), array('thin' => 110, 'heavy' => 412, 'total' => 130), );
你會看到第一行只顯示 thin
| 156 | 233 | 110 |
第二行只顯示heavy
| 128 | 25 | 412 |
第三行只顯示total
| 284 | 284 | 130 |
現實中應該會顯示這樣的內容:
+ --------------------------------------+ | Thin | Heavy | Total | +---------------------------------------+ | 156 | 128 | 284 | +---------------------------------------+ | 233 | 25 | 284 | +---------------------------------------+ | 110 | 412 | 130 | +---------------------------------------+
然後我意識到,也許將它們添加到彼此下面就是問題所在。 所以不要在 odt 上使用它
+-- ----------------------------------------------+ | Thin | Heavy | Total | +-------------------------------------------------+ | [b.thin; | | | | block=tbs:cell; | | | | parallel=tbs:table] | | | +-------------------------------------------------+ | [b.heavy] | | | +-------------------------------------------------+ | [b.total] | | | +-------------------------------------------------+
我正在用這個
+-- -------------------------------------------+ | Thin | Heavy | Total | +----------------------------------------------+ | [b.thin; | [b.heavy] | [b.total] | | block=tbs:cell; | | | | parallel=tbs:table]| | | | | | | +----------------------------------------------+
輸出:
+----------------------------------------------+ | | | | | | +----------------------------------------------+ | 128 | 25 | 412 | 522 | | +----------------------------------------------+
如您所見,它不能很好地迭代數組,並產生空白列,而且顯示的資料是隨機的
所以如果有人知道這有什麼問題,請告訴我
謝謝!
更新
我意識到在[r.thin;block=tbs:cell;parallel=tbs:table]
中我使用cell
而不是row
#所以我嘗試更改它 -> [r.thin;tbs:row;parallel=tbs:table]
,
它不起作用,但是第一次迭代是正確的:
+ --------------------------------------+ | 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] | +--------------------------+