Написание матрицы в Excel - PullRequest
       2

Написание матрицы в Excel

0 голосов
/ 30 января 2020

Я пытаюсь написать файл Excel из сценария python.

Я пытался сделать это с матрицей 24x32 (12 для всех месяцев и один пустой столбец и 32 для всех возможных дней плюс Еще 1 строка для названия месяца в верхней строке)

Я создал словарь со всеми названиями месяцев и продолжительностью месяца этого года, например:

months = {"JANUARY": 31, "FEBRUARY": 29, "MARCH": 31, "APRIL": 30, "MAY": 31, "JUNE": 30, "JULY": 31, "AUGUST": 31, "SEPTEMBER": 30, "OCTOBER": 31, "NOVEMBER": 30, "DECEMBER": 31}

И я написал эту функцию, которая пишет в файл Excel, но я получаю сообщение об ошибке, что я пытаюсь перезаписать ячейку, и я не могу понять, что делать

    def write_to_excel():
        months = {"JANUARY": 31, "FEBRUARY": 29, "MARCH": 31, "APRIL": 30, "MAY": 31, "JUNE": 30, "JULY": 31, "AUGUST": 31, "SEPTEMBER": 30, "OCTOBER": 31, "NOVEMBER": 30, "DECEMBER": 31}

        # Create Workbook
        workbook = xlwt.Workbook()
        # Create new sheet
        sheet = workbook.add_sheet("Sheet 1")

        column = 0
        if column % 2 == 0:
            for month in range(len(months.keys())):
                sheet.write(0, column, [*months.keys()][month])
                for date in range(1, int([*months.values()][month]) + 1):
                    sheet.write(date, column, f"{date}/{month}/2020")
        else:
            column += 1

Это ошибка, которую я получаю :

Traceback (most recent call last):
  File "C:/Users/user's_name/Desktop/app's_folder/app's_name.py", line 248, in <module>
    main_window()
  File "C:/Users/user's_name/Desktop/app's_folder/app's_name.py", line 240, in main_window
    response = approve_applications(raw_message)  # if it is get the email's information and project it on the window to be approved or denied
  File "C:/Users/user's_name/Desktop/app's_folder/app's_name.py", line 134, in approve_applications
    write_excel_file()
  File "C:/Users/user's_name/Desktop/app's_folder/app's_name.py", line 17, in write_excel_file
    sheet.write(column, 0, [*months.keys()][month])
  File "C:\Users\user's_name\AppData\Local\Programs\Python\Python37\lib\site-packages\xlwt\Worksheet.py", line 1088, in write
    self.row(r).write(c, label, style)
  File "C:\Users\user's_name\AppData\Local\Programs\Python\Python37\lib\site-packages\xlwt\Row.py", line 235, in write
    StrCell(self.__idx, col, style_index, self.__parent_wb.add_str(label))
  File "C:\Users\user's_name\AppData\Local\Programs\Python\Python37\lib\site-packages\xlwt\Row.py", line 154, in insert_cell
    raise Exception(msg)
Exception: Attempt to overwrite cell: sheetname='Sheet 1' rowx=0 colx=0

Под названием месяца я хочу каждый день писать, что он имеет такой вид day/month/2020

Таким образом, вывод должен быть:

And so on for each month

Название месяца не обязательно должно быть объединенной ячейкой, я не знаю, помогает ли это каким-либо образом, а воскресенья не должны быть цветными.

Если бы кто-то мог помочь, я был бы признателен, спасибо заранее.

1 Ответ

1 голос
/ 30 января 2020

Попробуйте это:

import pandas as pd
with pd.ExcelWriter('file_name.xlsx') as w:
    jan = pd.Series(pd.to_datetime(pd.date_range(start='1/1/2020', end='1/31/2020'))).dt.strftime('%m/%d/%Y')
    jan.to_excel(w, startcol=1)
    feb = pd.Series(pd.to_datetime(pd.date_range(start='2/1/2020', end='2/29/2020'))).dt.strftime('%m/%d/%Y')
    feb.to_excel(w, startcol=4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...