Django открывает excel.xlsx с помощью openpyxl из облачного хранилища google
мне нужно открыть файл .xlsx из моего ведра на google storage, проблема в том, что я получаю :FileNotFoundError at /api/ficha-excel
[Errno 2] Нет такого файла или каталога: 'ficha.xlsx'
вот настройки из моего ведра.
UPLOAD_ROOT = 'reportes/'
MEDIA_ROOT = 'reportes'
Это маршрутное ведро/reportes/ficha.xlsx
Вот код функции mi get:
directorio = FileSystemStorage("/reportes").base_location
os.makedirs(directorio, exist_ok=True)
# read
print("Directorios: ", directorio)
plantilla_excel = openpyxl.load_workbook(f"{directorio}/ficha.xlsx")
print(plantilla_excel.sheetnames)
currentSheet = plantilla_excel['Hoja1']
print(currentSheet['A5'].value)
в чем проблема с путем? Я не могу понять.
Нижеприведенное решение не использует классы Django FileStorage/Storage. Оно открывает файл .xlsx из ведра Cloud Storage на Google Storage с помощью openpyxl.
Summary :
Я загрузил файл Excel на GCS, прочитал данные Blob с помощью openpyxl через BytesIO и сохранил данные в рабочей книге с помощью метода .save().
Шаги, которые необходимо выполнить :
Создайте ведро Google Cloud Storage. Выберите для него глобально уникальное имя. Оставьте значения по умолчанию и, наконец, введите Create.
Выберите файл Excel из локальной системы и загрузите его в ведро с помощью опции "Upload files". После того как файл Excel будет загружен в ведро, выполните следующие действия :
Перейдите на Google Cloud Platform и создайте учетную запись службы (API). Нажмите Navigation Menu> APIs & Services> Credentials, чтобы перейти к экрану. Затем нажмите Manage Service Accounts.
.На следующем экране нажмите Создать учетную запись службы.
Введите данные счета обслуживания для каждого элемента.
В следующем разделе вы создадите роль для Cloud Storage. Выберите Администратор хранилища (полное разрешение).
Выделите созданную вами учетную запись службы, нажмите Добавить ключ в поле Ключи и выберите Создать новый ключ.
.Выберите JSON в качестве типа ключа и "создайте" его. Поскольку файл JSON загружен в локальное хранилище, используйте файл JSON в следующем пункте и задействуйте Cloud Storage из Python.
.Мы установим библиотеки, необходимые для этого проекта, в Cloud Shell Сначала установим библиотеку Google Cloud Storage с помощью pip install для доступа к облачному хранилищу:
pip install google-cloud-storage
Установите openpyxl с помощью :
pip install openpyxl
Создайте папку (excel) с выбранным вами именем в вашем редакторе Cloud. Создайте в ней файлы :
main.py JSON файл ключа (тот, который был загружен в локальное хранилище, скопируйте его файл в эту папку)
excel main.py ●●●●●●●●●●.json
Запишите следующие строки кода в файле main.py :
from google.cloud import storage
import openpyxl
import io
#Create a client instance for google cloud storage
client = storage.Client.from_service_account_json('●●●●●●●●●●.json') //The path to your JSON key file which is now
#Get an instance of a bucket
bucket = client.bucket(‘bucket_name’) //only the bucketname will do, full path not necessary.
##Get a blob instance of a file
blob = bucket.blob(‘test.xlsx') // test.xlsx is the excel file I uploaded in the bucket already.
buffer = io.BytesIO()
blob.download_to_file(buffer)
wb = openpyxl.load_workbook(buffer)
wb.save('./retest.xlsx')
Вы увидите, как в той же папке в Cloud Editor создается файл 'retest.xlsx'.