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

enter image description here

Вот код функции 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'.

Вернуться на верх