Ошибка специального символа. python pandas и win32com - PullRequest
1 голос
/ 27 января 2020

Я надеюсь, что у вас спокойной ночи / дня. Я на самом деле разрабатываю модуль с django, который извлекает файл xlsx с данными с моего сервера, и он работал для нескольких файлов. для этого процесса я запрашиваю данные с моего сервера, отфильтрованные по моей потребности, и помещаю их в pandas фрейм данных, затем вставляю их в шаблон xlsx с помощью Win32com и экспортирую на локальный драйвер, когда я пытался вчера, это сработало! !!. Но когда я попытался сделать выдержку из моего веб-приложения сегодня. У меня был неожиданный сюрприз, ошибка исключения:

com_error в / extract / extract_files (-2147352567, «Возникло исключение.», (0, Нет, Нет, Нет, 0, -2146827284), Нет)

поэтому я проверил эту ошибку и свою базу данных, чтобы выяснить, в чем проблема между файлами, созданными в последний день, и этой. на самом деле кажется, что у нового есть много текста со специальным символом, но это не так, как несколько символов, которые вызывают проблему (данные для этого файла его более 8000 строк). Вот как данные помещаются в мой шаблон.

    df2 = pd.DataFrame(dict_datas_c2)
    df1 = pd.DataFrame(dict_datas_c1)
    df3 = pd.DataFrame(dict_datas_c3)

    # convertion de l'objet en date

    df1['Task End Date'] = pd.to_datetime(df1['Task End Date'])
    df1['Previous Inspection Date'] = pd.to_datetime(df1['Previous Inspection Date'])

    # conversion de date en str

    df1['Task End Date'] = df1['Task End Date'].dt.strftime('%Y-%m-%d')
    df1['Previous Inspection Date'] = df1['Previous Inspection Date'].dt.strftime('%Y-%m-%d')

    df1['Previous Inspection Date'] = df1['Previous Inspection Date'].replace('NaT', '')

    ########################## CREATION PERSONALIZED PATH AND PATH FOR OUTPUT FROM TEMPLATE##########################

    date_now = datetime.datetime.now()
    date_str = date_now.strftime("%d%m%Y" + "_" + "%H" + "%M")

    path = './SUPPORT DATA FILES/'
    filename = 'ED_' + ed + '_' + ed_name + '_' + date_str + '.xlsx'

    extract_filename = path +  filename 
    template_file = #another path

    copyfile(template_file, extract_filename)
    ########################## INSERTING DATAS INTO EXCELFILE ########################################################

    pythoncom.CoInitialize()

    # Open excel to access to template

    excel = win32.GetObject(None, 'Excel.Application')

    # def workbook

    wb = excel.Workbooks.Open(extract_filename)

    # each sheet

    first_sheet_info=wb.Worksheets("NOTES")
    second_sheet_C1=wb.Worksheets("C1. Scheduled Maintenance Tasks")
    third_sheet_C2= wb.Worksheets("C2. Findings&Corrective Actions")

    # inserting datas into each sheet

    first_sheet_info.Range(first_sheet_info.Cells(2,1),# Cell to start the "paste"
                first_sheet_info.Cells(1+len(df3.index)-1,
                1+len(df3.columns)-1)
            ).Value = df3.values

    second_sheet_C1.Range(second_sheet_C1.Cells(4,1),# Cell to start the "paste"
                second_sheet_C1.Cells(4+len(df1.index)-1,
                1+len(df1.columns)-1)
            ).Value = df1.values

    third_sheet_C2.Range(third_sheet_C2.Cells(4,1),# Cell to start the "paste"
            third_sheet_C2.Cells(4+len(df2.index)-1,
                    1+len(df2.columns)-1)
            ).Value = df2.values

    # excel close and save

    wb.Close(SaveChanges=1)
    excel.Quit()

    name_of_file = str(filename)
    list_files.append(name_of_file)

Итак, лист, с которым я борюсь, это "third_sheet_C2", где в некоторых столбцах есть специальный символ:

Это код которые вставляют фрейм данных в шаблон с помощью win32com.client.

Пожалуйста, если у вас есть какие-либо идеи о том, как помочь мне или другому решению поместить df в шаблоны без используя win32com, скажите мне !! PS: я уже пытался использовать openpyxl, и он не работает.

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