ЭКСПОРТ В формате XLSX python google sheet api

#python #google-sheets #google-drive-api

Вопрос:

могу я узнать, что мне нужно сделать, чтобы экспортировать файл в Google sheet в формате xlsx?

Мой приведенный ниже код работает, но мне нужно сохранить файл также в формате xlsx…… 🙁

Вот мой код:

 from oauth2client.service_account import ServiceAccountCredentials
import gsheets

pdkey = "keypd.json"
url = f"https://docs.google.com/spreadsheets/d/1MCkqb_123123123123asdasdada/edit#gid=0"

SCOPE = ["https://spreadsheets.google.com/feeds", 'https://www.googleapis.com/auth/spreadsheets',
         "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive"]
CREDS = ServiceAccountCredentials.from_json_keyfile_name(pdkey, SCOPE)

sheets = gsheets.Sheets(CREDS)
sheet = sheets.get(url)
sheet[0].to_csv("/root/xlsx/SAMPLE.csv")
 

Комментарии:

1. Когда я протестировал предложенный сценарий, ошибки не возникло, и файл XLSX можно создать. Но, судя по вашему ответу no data since it has 9kb file size only , я подумал, что, когда данные в файле могут быть подтверждены, причина проблемы может быть найдена. Но, судя Unfortunately, I cannot give you the data in the xlsx file since the file has only 1kb and unable to open it по всему , я не могу видеть данные в файле. Поэтому на данном этапе я не могу понять проблему ОП. Но, когда я смог найти причину этого, я хотел бы изменить свой ответ.

2. Теперь я думаю, что на данном этапе мой ответ не был полезен для ситуации ОП. Поэтому я должен удалить свой ответ. Это связано с моим плохим мастерством. Я глубоко извиняюсь за это.

3. Нет, спасибо за вашу помощь, по крайней мере, у меня есть идея о том, как извлечь файл xlsx. Вы можете опубликовать свое решение, чтобы я мог вернуться к нему. Спасибо @Tanaike

4. Спасибо, что ответили. Я приношу извинения за причиненные неудобства. К сожалению, я все еще не могу повторить вашу ситуацию. Это связано с моим плохим мастерством. Я глубоко извиняюсь за это. Когда я смогу правильно воспроизвести вашу ситуацию, я хотел бы подумать о решении. Я был бы признателен, если бы вы могли простить мое плохое мастерство.

5. Вы можете снова опубликовать свой предыдущий измененный код здесь, чтобы я мог вернуться к нему. Спасибо @Tanaike

Ответ №1:

В вашей ситуации, как насчет экспорта электронной таблицы с помощью метода экспорта Drive API? Когда это отражено в вашем сценарии, это выглядит следующим образом.

Измененный сценарий:

От:

 sheets = gsheets.Sheets(CREDS)
sheet = sheets.get(url)
sheet[0].to_csv("/root/xlsx/SAMPLE.csv")
 

Для:

 access_token = CREDS.create_delegated(CREDS._service_account_email).get_access_token().access_token
url = "https://www.googleapis.com/drive/v3/files/"   spreadsheet_id   "/export?mimeType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
res = requests.get(url, headers={"Authorization": "Bearer "   access_token})

# If you want to create the XLSX data as a file, you can use the following script.
with open("sample.xlsx", 'wb') as f:
    f.write(res.content)
 
  • В этом скрипте, пожалуйста, добавьте import requests .
  • В этом измененном сценарии электронная таблица экспортируется в виде данных XLSX с использованием метода экспорта в Drive API. Маркер доступа извлекается из учетной записи службы.

Ссылка:

Комментарии:

1. Я попытался изменить свой сценарий с помощью вашего точного сценария выше, но похоже, что извлеченный файл xlsx поврежден или в нем нет данных, так как он имеет только размер файла 9 кб, может быть, что-то не так с моей модификацией сценария? Я также добавил запрос на импорт над сценарием, и я удаляю сценарий csv, затем копирую и вставляю ваш измененный сценарий, а затем выполняю его на своем сервере.

2. @rodskies Спасибо, что ответили. Я приношу извинения за причиненные неудобства. К сожалению, я не могу повторить вашу ситуацию. Когда я протестировал предложенный мной сценарий, файл XLSX можно было создать. Я приношу извинения за это замечание. Итак, в вашей текущей ситуации могу ли я спросить вас о деталях данных в созданном файле corrupted or no data since it has 9kb file size only ? Этим я хотел бы подтвердить это.

3. только 1 кб, приносим извинения за путаницу. вот ошибка, когда я открываю извлеченный файл xlsx «Excel не может открыть файл ‘sample.xlsx’ потому что формат расширения файла недопустим. Убедитесь, что файл не поврежден и что расширение файла соответствует формату файла»

4. @rodskies Спасибо, что ответили. Я приношу извинения за причиненные неудобства. Примерно Excel cannot open the file 'sample.xlsx' because the file format of file extension is not valid. Verify that the file has not been corrupted and that the file extension matches the format of the file , исходя из этой ситуации, я хотел подтвердить данные в файле. Я глубоко извиняюсь за это.

5. К сожалению, я не могу предоставить вам данные в файле xlsx, так как файл имеет размер всего 1 кб, и я не могу его открыть, но, основываясь на предыдущем извлеченном файле в формате csv, размер извлеченного файла составляет 2466 кб с данными.