Экспорт результатов запроса в файлы xlsx с использованием Python ⇐ Python
Экспорт результатов запроса в файлы xlsx с использованием Python
`Я пытаюсь вывести результат моих запросов в формат, который будет легко понять, результат запроса должен отображаться в формате, иллюстрирующем каждый DL_montantTTC за год (период), триместр и месяц для каждого ct_num с его соответствующий итог . у меня возникла ошибка в первом запросе'
запросы = [ '''ВЫБИРАТЬ ct_num, ГОД(DO_Date) КАК период, СУММ(DL_montantTTC) КАК DL_MontantTTC ОТ f_docligne ГДЕ DO_type IN (3, 6, 7) и do_domain=0 ГРУППА ПО ct_num, ГОД(DO_Date) СОРТИРОВАТЬ ПО ct_num, ГОД(DO_Date);''' , '''ВЫБИРАТЬ ct_num, ГОД(DO_Date) КАК период, СЛУЧАЙ КОГДА МЕСЯЦ(DO_Date) МЕЖДУ 1 И 3, ТОГДА «Триместр 1» КОГДА МЕСЯЦ(DO_Date) МЕЖДУ 4 ДО 6, ТОГДА «Триместр 2» КОГДА МЕСЯЦ(DO_Date) МЕЖДУ 7 ДО 9, ТОГДА «Триместр 3» КОГДА МЕСЯЦ(DO_Date) МЕЖДУ 10 ДО 12 ЧИСЛА, ТОГДА «Триместр 4» КОНЕЦ КАК Триместр, СУММ(DL_MontantTTC) КАК DL_MontantTTC ОТ f_docligne ГДЕ DO_type IN (3, 6, 7) и do_domain=0 ГРУППА ПО ct_num, ГОД(DO_Date), СЛУЧАЙ КОГДА МЕСЯЦ(DO_Date) МЕЖДУ 1 И 3, ТОГДА «Триместр 1» КОГДА МЕСЯЦ(DO_Date) МЕЖДУ 4 ДО 6, ТОГДА «Триместр 2» КОГДА МЕСЯЦ(DO_Date) МЕЖДУ 7 ДО 9, ТОГДА «Триместр 3» КОГДА МЕСЯЦ(DO_Date) МЕЖДУ 10 ДО 12 ЧИСЛА, ТОГДА «Триместр 4» КОНЕЦ СОРТИРОВАТЬ ПО ct_num, ГОД(DO_Date), Триместр;''' , '''ВЫБИРАТЬ ct_num, ГОД(DO_Date) КАК период, DATENAME(MONTH, DO_Date) AS Mois, СУММ(DL_MontantTTC) КАК DL_MontantTTC ОТ f_docligne ГДЕ DO_type IN (3, 6, 7) и do_domain=0 ГРУППА ПО ct_num, ГОД(DO_Date), DATENAME(МЕСЯЦ, DO_Дата) СОРТИРОВАТЬ ПО ct_num, ГОД(DO_Date), DATENAME(МЕСЯЦ, DO_Date);''' ] все_результаты = [] для query_index запрос в перечислении (запросы, начало = 1): результаты = выполнение_запроса (запрос, лист, индекс_запроса) all_results.extend(результаты) # Создайте новый лист для отображения реорганизованных данных summary_sheet = workbook.create_sheet(title="Сводка") header_style = PatternFill(start_color="0000FF", end_color="0000FF", fill_type="solid") header_font = Шрифт (имя = 'Arial', цвет = "FFFFFF") cell_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), low=Side(style='thin')) summary_sheet['A1'] = 'ct_num' summary_sheet['A1'].fill = header_style summary_sheet['A1'].font = header_font summary_sheet['A1'].border = cell_border # Определить список всех периодов, триместров и месяцев периоды = установить() триместры = установить() месяцы = установить() для результата в all_results: ct_num, период, категория, dl_montantTTC = результат если категория == 'Год': period.add(период) elif Category.startswith('Триместр'): триместры.add(категория) Категория elif в ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'. ']: месяцы.add(категория) # Запишите периоды, триместры и месяцы в сводный лист номер_столбца = 2 за период в отсортированных(периодах): summary_sheet[get_column_letter(col_num) + '1'] = f'Год {период}' номер_столбца += 1 для триместра в сортировке(триместры): summary_sheet[get_column_letter(col_num) + '1'] = триместр номер_столбца += 1 за месяц в сортировке(месяцы): summary_sheet[get_column_letter(col_num) + '1'] = месяц номер_столбца += 1 # Организуйте данные по ct_num и подсчитайте итоги ct_num_data = {} для результата в all_results: ct_num, период, категория, dl_montantTTC = результат если ct_num нет в ct_num_data: ct_num_data[ct_num] = {p: 0 для p в отсортированных (периодах)} ct_num_data[ct_num].update({t: 0 для t в отсортированных(триместрах)}) ct_num_data[ct_num].update({m: 0 для m в сортировке (месяцы)}) ct_num_data[ct_num][период] += dl_montantTTC если категория != 'Год': ct_num_data[ct_num][категория] += dl_montantTTC # Запишите организованные данные в сводный лист номер_строки = 2 для ct_num, ct_data в ct_num_data.items(): summary_sheet[f'A{row_num}'] = ct_num номер_столбца = 2 за период в отсортированных(периодах): summary_sheet[f'{get_column_letter(col_num)}{row_num}'] = ct_data[период] номер_столбца += 1 для триместра в сортировке(триместры): summary_sheet[f'{get_column_letter(col_num)}{row_num}'] = ct_data[триместр] номер_столбца += 1 за месяц в сортировке(месяцы): summary_sheet[f'{get_column_letter(col_num)}{row_num}'] = ct_data[месяц] номер_столбца += 1 номер_строки += 1 # Сохраняем файл Excel file_path = filedialog.asksaveasfilename(defaultextension='.xlsx', filetypes=[('Excel Files', '*.xlsx')], title='Сохранить как') если путь_файла: рабочая книга.save(путь_файла) конн.закрыть() ct_num, период, категория, dl_montantTTC = результат Ошибка значения: недостаточно значений для распаковки (ожидалось 4, получено 3), как мне увидеть распакованные значения`
`Я пытаюсь вывести результат моих запросов в формат, который будет легко понять, результат запроса должен отображаться в формате, иллюстрирующем каждый DL_montantTTC за год (период), триместр и месяц для каждого ct_num с его соответствующий итог . у меня возникла ошибка в первом запросе'
запросы = [ '''ВЫБИРАТЬ ct_num, ГОД(DO_Date) КАК период, СУММ(DL_montantTTC) КАК DL_MontantTTC ОТ f_docligne ГДЕ DO_type IN (3, 6, 7) и do_domain=0 ГРУППА ПО ct_num, ГОД(DO_Date) СОРТИРОВАТЬ ПО ct_num, ГОД(DO_Date);''' , '''ВЫБИРАТЬ ct_num, ГОД(DO_Date) КАК период, СЛУЧАЙ КОГДА МЕСЯЦ(DO_Date) МЕЖДУ 1 И 3, ТОГДА «Триместр 1» КОГДА МЕСЯЦ(DO_Date) МЕЖДУ 4 ДО 6, ТОГДА «Триместр 2» КОГДА МЕСЯЦ(DO_Date) МЕЖДУ 7 ДО 9, ТОГДА «Триместр 3» КОГДА МЕСЯЦ(DO_Date) МЕЖДУ 10 ДО 12 ЧИСЛА, ТОГДА «Триместр 4» КОНЕЦ КАК Триместр, СУММ(DL_MontantTTC) КАК DL_MontantTTC ОТ f_docligne ГДЕ DO_type IN (3, 6, 7) и do_domain=0 ГРУППА ПО ct_num, ГОД(DO_Date), СЛУЧАЙ КОГДА МЕСЯЦ(DO_Date) МЕЖДУ 1 И 3, ТОГДА «Триместр 1» КОГДА МЕСЯЦ(DO_Date) МЕЖДУ 4 ДО 6, ТОГДА «Триместр 2» КОГДА МЕСЯЦ(DO_Date) МЕЖДУ 7 ДО 9, ТОГДА «Триместр 3» КОГДА МЕСЯЦ(DO_Date) МЕЖДУ 10 ДО 12 ЧИСЛА, ТОГДА «Триместр 4» КОНЕЦ СОРТИРОВАТЬ ПО ct_num, ГОД(DO_Date), Триместр;''' , '''ВЫБИРАТЬ ct_num, ГОД(DO_Date) КАК период, DATENAME(MONTH, DO_Date) AS Mois, СУММ(DL_MontantTTC) КАК DL_MontantTTC ОТ f_docligne ГДЕ DO_type IN (3, 6, 7) и do_domain=0 ГРУППА ПО ct_num, ГОД(DO_Date), DATENAME(МЕСЯЦ, DO_Дата) СОРТИРОВАТЬ ПО ct_num, ГОД(DO_Date), DATENAME(МЕСЯЦ, DO_Date);''' ] все_результаты = [] для query_index запрос в перечислении (запросы, начало = 1): результаты = выполнение_запроса (запрос, лист, индекс_запроса) all_results.extend(результаты) # Создайте новый лист для отображения реорганизованных данных summary_sheet = workbook.create_sheet(title="Сводка") header_style = PatternFill(start_color="0000FF", end_color="0000FF", fill_type="solid") header_font = Шрифт (имя = 'Arial', цвет = "FFFFFF") cell_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), low=Side(style='thin')) summary_sheet['A1'] = 'ct_num' summary_sheet['A1'].fill = header_style summary_sheet['A1'].font = header_font summary_sheet['A1'].border = cell_border # Определить список всех периодов, триместров и месяцев периоды = установить() триместры = установить() месяцы = установить() для результата в all_results: ct_num, период, категория, dl_montantTTC = результат если категория == 'Год': period.add(период) elif Category.startswith('Триместр'): триместры.add(категория) Категория elif в ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'. ']: месяцы.add(категория) # Запишите периоды, триместры и месяцы в сводный лист номер_столбца = 2 за период в отсортированных(периодах): summary_sheet[get_column_letter(col_num) + '1'] = f'Год {период}' номер_столбца += 1 для триместра в сортировке(триместры): summary_sheet[get_column_letter(col_num) + '1'] = триместр номер_столбца += 1 за месяц в сортировке(месяцы): summary_sheet[get_column_letter(col_num) + '1'] = месяц номер_столбца += 1 # Организуйте данные по ct_num и подсчитайте итоги ct_num_data = {} для результата в all_results: ct_num, период, категория, dl_montantTTC = результат если ct_num нет в ct_num_data: ct_num_data[ct_num] = {p: 0 для p в отсортированных (периодах)} ct_num_data[ct_num].update({t: 0 для t в отсортированных(триместрах)}) ct_num_data[ct_num].update({m: 0 для m в сортировке (месяцы)}) ct_num_data[ct_num][период] += dl_montantTTC если категория != 'Год': ct_num_data[ct_num][категория] += dl_montantTTC # Запишите организованные данные в сводный лист номер_строки = 2 для ct_num, ct_data в ct_num_data.items(): summary_sheet[f'A{row_num}'] = ct_num номер_столбца = 2 за период в отсортированных(периодах): summary_sheet[f'{get_column_letter(col_num)}{row_num}'] = ct_data[период] номер_столбца += 1 для триместра в сортировке(триместры): summary_sheet[f'{get_column_letter(col_num)}{row_num}'] = ct_data[триместр] номер_столбца += 1 за месяц в сортировке(месяцы): summary_sheet[f'{get_column_letter(col_num)}{row_num}'] = ct_data[месяц] номер_столбца += 1 номер_строки += 1 # Сохраняем файл Excel file_path = filedialog.asksaveasfilename(defaultextension='.xlsx', filetypes=[('Excel Files', '*.xlsx')], title='Сохранить как') если путь_файла: рабочая книга.save(путь_файла) конн.закрыть() ct_num, период, категория, dl_montantTTC = результат Ошибка значения: недостаточно значений для распаковки (ожидалось 4, получено 3), как мне увидеть распакованные значения`
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение