Как установить print_area и repeat_rows с помощью xlsxwriter, если мне нужны собственные имена листов? - PullRequest
1 голос
/ 14 марта 2020

Как я могу создать файл xlsx, для которого я могу указать все следующие функции, используя xlsxwriter?

  1. Настраиваемое имя для каждого листа (add_worksheet)
  2. Спецификация c область печати (print_area)
  3. Повторение первого ряда листа на каждой напечатанной странице (repeat_rows)

Я пытался использовать (что-то похожее на ) следующий код:

import xlsxwriter
import pandas as pd
from random import randint

df = pd.DataFrame({'A': [randint(2000, 2001) for x in range(150)],
                   'B': [randint(300, 400) for x in range(150)]})

workbook = xlsxwriter.Workbook('xlsxwriter-problem.xlsx')
main_format = workbook.add_format({'border': 1})
for name, group in df.groupby('A'):
    worksheet = workbook.add_worksheet(str(name))
    worksheet.write(0, 0, 'B')
    for i in range(1, len(group.index)):
        worksheet.write(i, 0, group.iloc[i,1])
    worksheet.set_column(0, 0, None, main_format)
    worksheet.print_area('A1:A95')
    worksheet.repeat_rows(0)
workbook.close()

Однако, когда я открываю файл в LibreOffice Cal c, я замечаю, что последние две строки внутри l oop, похоже, игнорируются, и я получаю это нежелательное поведение .

Через некоторое время я обнаружил, что эти две строки выдают желаемое поведение , если я использую имена листов по умолчанию, то есть, если я задаю

worksheet = workbook.add_worksheet()

внутри l oop.

Невозможно сохранить имя пользовательского листа и другие функции?

...