Je voudrais écrire un tableau comme celui-ci:
----------------
| Long Cell |
----------------
| 1 | 2 |
----------------
Comment écrire la cellule Long Cell
? Merci.
J'ai essayé de le faire comme ceci:
sheet.write(0, 0, 'Long Cell')
sheet.write(1, 0, 1)
sheet.write(1, 1, 2)
Mais ça finit comme:
--------------------
| Long Cell | |
--------------------
| 1 | 2 |
--------------------
Pour autant que je sache, cela n'est pas documenté - vous devez lire le code source pour le trouver. Il existe deux méthodes sur la classe Worksheet
pour ce faire, write_merge
et merge
. merge
prend les cellules existantes et les fusionne, tandis que write_merge
écrit une étiquette (tout comme write
) et fait la même chose que merge
.
Les deux prennent les cellules pour fusionner en r1, r2, c1, c2
, et acceptez un paramètre style
facultatif.
D'après votre exemple, ce serait l'appel le plus simple:
sheet.write_merge(0, 0, 0, 1, 'Long Cell')
sheet.write(1, 0, 1)
sheet.write(1, 1, 2)
Pour être plus explicite sur le fonctionnement de l'appel:
top_row = 0
bottom_row = 0
left_column = 0
right_column = 1
sheet.write_merge(top_row, bottom_row, left_column, right_column, 'Long Cell')
Alternativement, en utilisant merge
:
sheet.write(top_row, left_column, 'Long Cell')
sheet.merge(top_row, bottom_row, left_column, right_column)
merge
a quelques commentaires dans la source soulignant les problèmes potentiels:
# Problems: (1) style to be used should be existing style of # the top-left cell, not an arg. # (2) should ensure that any previous data value in # non-top-left cells is nobbled. # Note: if a cell is set by a data record then later # is referenced by a [MUL]BLANK record, Excel will blank # out the cell on the screen, but OOo & Gnu will not # blank it out. Need to do something better than writing # multiple records. In the meantime, avoid this method and use # write_merge() instead.
Mais ce serait bien pour un cas simple comme celui-ci.