22import gspread
33from io import BytesIO
44import logging
5- from openpyxl import Workbook
5+ from openpyxl import load_workbook
66import requests
77from pathlib import Path
88from google .oauth2 import service_account
@@ -38,10 +38,10 @@ def download_sheet(
3838) -> bytes | None :
3939 try :
4040 client , access_token = get_sheets_service_and_token (google_cred )
41- if export_format == "xlsx" :
42- content = get_excel_with_values ( client , table_id , sheet_id )
43- else :
44- content = export_file ( table_id , sheet_id , access_token , export_format )
41+ content = export_file ( table_id , sheet_id , access_token , export_format )
42+
43+ if export_format == "xlsx" and content :
44+ content = get_excel_with_values ( content )
4545
4646 if not content :
4747 logger .error (f"Ошибка экспорта файла" )
@@ -59,22 +59,12 @@ def download_sheet(
5959 logger .error (f"Ошибка при скачивании: { e } " )
6060
6161
62- def get_excel_with_values (
63- service : gspread .Client , table_id : str , sheet_id : str
64- ) -> bytes :
62+ def get_excel_with_values (content : bytes ) -> bytes :
6563 """
6664 Сохраняет значения (не формулы) листа таблицы в XLSX-файл
6765 """
68- spreadsheet = service .open_by_key (table_id )
69- worksheet = spreadsheet .get_worksheet_by_id (int (sheet_id ))
70- data = worksheet .get_all_values ()
71-
72- wb = Workbook ()
73- ws = wb .active
74- ws .title = worksheet .title
7566
76- for row in data :
77- ws .append (row )
67+ wb = load_workbook (BytesIO (content ), data_only = True )
7868
7969 file_stream = BytesIO ()
8070 wb .save (file_stream )
0 commit comments