Saya menggunakan perpustakaan yang dipanggil OpenTbs untuk mencipta odt menggunakan PHP, saya menggunakannya kerana penjanaan lajur dan baris yang dinamik.
Saya tahu cara membuat baris dan lajur, tetapi saya tidak tahu cara menyusunnya.
Biar saya tambahkan contoh:
Jadi pertama saya akan menambah ini pada odt saya,
+-- ---------------------------------------------------+ | Thin | Heavy | Total | +------------------------------------------------------+ | [b.date] | | | +------------------------------------------------------+ | [b.thin; | | | | block=tbs:cell; | | | | parallel=tbs:table] | | | | | | | +------------------------------------------------------+ | [b.heavy] | | | +------------------------------------------------------+ | [b.total] | | | +------------------------------------------------------+
Kemudian dalam kod saya akan gunakan:
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); ?>
Output:
+ --------------------------------------+ | Thin | Heavy | Total | +---------------------------------------+ | 156 | 233 | 110 | +---------------------------------------+ | 128 | 25 | 412 | +---------------------------------------+ | 284 | 284 | 130 | +---------------------------------------+
Semua jahitan baik, tetapi jika kita membandingkannya dengan tatasusunan$data
$data = array( array('thin' => 156, 'heavy' => 128, 'total' => 284), array('thin' => 233, 'heavy' => 25, 'total' => 284), array('thin' => 110, 'heavy' => 412, 'total' => 130), );
Anda akan melihat bahawa baris pertama hanya menunjukkanthin
| 156 | 233 | 110 |
Barisan kedua hanya memaparkanheavy
| 128 | 25 | 412 |
Barisan ketiga hanya memaparkantotal
| 284 | 284 | 130 |
Sebenarnya, kandungan seperti ini harus dipaparkan:
+ --------------------------------------+ | Thin | Heavy | Total | +---------------------------------------+ | 156 | 128 | 284 | +---------------------------------------+ | 233 | 25 | 284 | +---------------------------------------+ | 110 | 412 | 130 | +---------------------------------------+
Kemudian saya menyedari bahawa mungkin menambahkannya di bawah satu sama lain adalah masalahnya. Jadi jangan gunakan pada odt
+-- ----------------------------------------------+ | Thin | Heavy | Total | +-------------------------------------------------+ | [b.thin; | | | | block=tbs:cell; | | | | parallel=tbs:table] | | | +-------------------------------------------------+ | [b.heavy] | | | +-------------------------------------------------+ | [b.total] | | | +-------------------------------------------------+
Saya menggunakan ini
+-- -------------------------------------------+ | Thin | Heavy | Total | +----------------------------------------------+ | [b.thin; | [b.heavy] | [b.total] | | block=tbs:cell; | | | | parallel=tbs:table]| | | | | | | +----------------------------------------------+
Output:
+----------------------------------------------+ | | | | | | +----------------------------------------------+ | 128 | 25 | 412 | 522 | | +----------------------------------------------+
Seperti yang anda lihat ia tidak berulang pada tatasusunan dengan baik dan menghasilkan lajur kosong dan data yang ditunjukkan adalah rawak
Jadi jika sesiapa tahu apa yang salah dengan ini sila beritahu saya
Terima kasih!
Dikemas kini
Saya sedar bahawa dalam[r.thin;block=tbs:cell;parallel=tbs:table]
中我使用cell
而不是row
Jadi saya cuba mengubahnya ->[r.thin;tbs:row;parallel=tbs:table]
Ia tidak berfungsi, tetapi lelaran pertama adalah betul:
+ --------------------------------------+ | Thin | Heavy | Total | +---------------------------------------+ | 156 | 128 | 284 | +---------------------------------------+
Berkenaan paralelisme
功能
, keputusan yang anda dapat adalah betul. Selari功能
melakukan cantuman mengikut lajur dan bukannya cantum mengikut baris.Untuk menggabungkan mengikut baris, templat anda mungkin kelihatan seperti ini:
Untuk penggabungan mengikut lajur, templat anda mungkin kelihatan seperti ini: