Как установить ширину столбцов с несколькими условиями, используя xlwriter в Python 3 - PullRequest
0 голосов
/ 19 марта 2019

У меня есть несколько столбцов во фрейме данных и код, подобный этому, для настройки ширины столбцов:

    # by index
    for idx, col in enumerate(df):
        #series = df[col]            
        if idx <= 1:
            worksheet.set_column(idx+1, idx+1, 7)
        elif idx > 1 and idx < 10:
            worksheet.set_column(idx+1, idx+1, 20)        
        else:
            worksheet.set_column(idx+1, idx+1, 10)
    # by column
    for idx, col in enumerate(df):        
        if col == 'SINGLE_SENTENCE' or col == 'SUMMARY':
            worksheet.set_column(idx, idx+1, 50)
        elif col == 'TOTAL':
            worksheet.set_column(idx, idx+1, 15)

Все работает нормально, но, к сожалению, настройка для полей 'SINGLE_SENTENCE' (D) или 'SUMMARY' (C)странно.У меня есть несколько случаев использования значения idx:

Когда я использую worksheet.set_column(idx, idx, 50), он настраивает столбец B

Когда worksheet.set_column(idx, idx+1, 50), он настраивает B и C

Когда worksheet.set_column(idx+1, idx+2, 50) он также регулирует B и C.

Когда worksheet.set_column(idx+1, idx+1, 50) настраивает D.

Где логика?Если это ошибка, как преодолеть использование имен столбцов?Кажется, что-то имеет значение, но как и почему - форматирование было последним, что я изменил.

1 Ответ

0 голосов
/ 19 марта 2019

Я обнаружил, что первая безымянная строка df вызвала проблему. Заменено: df.to_excel(writer, sheet_name=sheetname)

с

df.to_excel(writer, sheet_name=sheetname, index=False)

Теперь worksheet.set_column(idx, idx, 20) работает для idx и

worksheet.set_column(idx, idx+1, 50) для col в качестве ограничения запроса.

Сейчас работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...