J'utilise une bibliothèque appelée OpenTbs pour créer odt en utilisant PHP, je l'utilise en raison de la génération dynamique de colonnes et de lignes.
Je sais comment créer des lignes et des colonnes, mais je ne sais pas comment les organiser.
Permettez-moi d'ajouter un exemple :
Alors je vais d'abord ajouter ceci à mon odt,
+-- ---------------------------------------------------+ | Thin | Heavy | Total | +------------------------------------------------------+ | [b.date] | | | +------------------------------------------------------+ | [b.thin; | | | | block=tbs:cell; | | | | parallel=tbs:table] | | | | | | | +------------------------------------------------------+ | [b.heavy] | | | +------------------------------------------------------+ | [b.total] | | | +------------------------------------------------------+
Ensuite dans le code j'utiliserai :
<?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); ?>
Sortie :
+ --------------------------------------+ | Thin | Heavy | Total | +---------------------------------------+ | 156 | 233 | 110 | +---------------------------------------+ | 128 | 25 | 412 | +---------------------------------------+ | 284 | 284 | 130 | +---------------------------------------+
Tout va bien, mais si on le compare au tableau $data
$data = array( array('thin' => 156, 'heavy' => 128, 'total' => 284), array('thin' => 233, 'heavy' => 25, 'total' => 284), array('thin' => 110, 'heavy' => 412, 'total' => 130), );
Vous verrez que la première ligne ne montre que thin
| 156 | 233 | 110 |
La deuxième ligne affiche uniquement heavy
| 128 | 25 | 412 |
La troisième ligne affiche uniquement total
| 284 | 284 | 130 |
En réalité, un contenu comme celui-ci devrait être affiché :
+ --------------------------------------+ | Thin | Heavy | Total | +---------------------------------------+ | 156 | 128 | 284 | +---------------------------------------+ | 233 | 25 | 284 | +---------------------------------------+ | 110 | 412 | 130 | +---------------------------------------+
Ensuite, j'ai réalisé que le problème était peut-être de les ajouter les uns sous les autres. Alors ne l'utilisez pas sur odt
+-- ----------------------------------------------+ | Thin | Heavy | Total | +-------------------------------------------------+ | [b.thin; | | | | block=tbs:cell; | | | | parallel=tbs:table] | | | +-------------------------------------------------+ | [b.heavy] | | | +-------------------------------------------------+ | [b.total] | | | +-------------------------------------------------+
J'utilise ceci
+-- -------------------------------------------+ | Thin | Heavy | Total | +----------------------------------------------+ | [b.thin; | [b.heavy] | [b.total] | | block=tbs:cell; | | | | parallel=tbs:table]| | | | | | | +----------------------------------------------+
Sortie :
+----------------------------------------------+ | | | | | | +----------------------------------------------+ | 128 | 25 | 412 | 522 | | +----------------------------------------------+
Comme vous pouvez le voir, il ne parcourt pas bien le tableau et produit des colonnes vides et les données affichées sont aléatoires
Donc, si quelqu'un sait ce qui ne va pas, faites-le-moi savoir
Merci !
Mise à jour
Je m'en suis rendu compte en [r.thin;block=tbs:cell;parallel=tbs:table]
中我使用 cell
而不是 row
Alors j'ai essayé de le changer ->
[r.thin;tbs:row;parallel=tbs:table]
Cela ne fonctionne pas, mais la première itération est correcte :
+ --------------------------------------+ | Thin | Heavy | Total | +---------------------------------------+ | 156 | 128 | 284 | +---------------------------------------+
Concernant le parallélisme
功能
, les résultats que vous avez obtenus sont corrects. Parallel功能
effectue une fusion par colonne au lieu d'une fusion par ligne.Pour une fusion par lignes, votre modèle pourrait ressembler à ceci :
Pour une fusion par colonne, votre modèle pourrait ressembler à ceci :