Подтвердить что ты не робот

Как написать ячейку с несколькими столбцами в xlwt?

Я бы хотел написать таблицу следующим образом:

----------------
| Long Cell    |
----------------
| 1    | 2     |
----------------

Как записать ячейку Long Cell? Спасибо.

Я попытался сделать это вот так:

sheet.write(0, 0, 'Long Cell')
sheet.write(1, 0, 1)
sheet.write(1, 1, 2)

Но это заканчивается так:

--------------------
| Long Cell |      |
--------------------
| 1         | 2    |
--------------------
4b9b3361

Ответ 1

Насколько я могу судить, это не документировано - вам нужно прочитать исходный код, чтобы найти его. Для этого в классе Worksheet есть два метода: write_merge и merge. merge принимает существующие ячейки и объединяет их, а write_merge записывает метку (точно так же, как write), а затем делает то же самое вещество merge.

Обе ячейки должны слить как r1, r2, c1, c2 и принять необязательный параметр style.

В вашем примере это будет самый простой вызов:

sheet.write_merge(0, 0, 0, 1, 'Long Cell')
sheet.write(1, 0, 1)
sheet.write(1, 1, 2)

Более подробно о том, как работает звонок:

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')

В качестве альтернативы, используя merge:

sheet.write(top_row, left_column, 'Long Cell')
sheet.merge(top_row, bottom_row, left_column, right_column)

merge имеет некоторые комментарии в источнике, указывающие на потенциальные проблемы:

    # 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.

Но это было бы хорошо для простого случая, подобного этому.