Using openpyxl to read file from memory

In the docs for load_workbook it says:

#:param filename: the path to open or a file-like object

..so it was capable of it all the time. It reads a path or takes a file-like object. I only had to convert my file-like object returned by urlopen, to a bytestream with:

from io import BytesIO
wb = load_workbook(filename=BytesIO(input_excel.read()))

and I can read every piece of data in my Google-spreadsheet.


I was looking to load a file from an URL and here is what I came up with:

util:

from openpyxl import load_workbook
from io import BytesIO
import urllib

def load_workbook_from_url(url):
    file = urllib.request.urlopen(url).read()
    return load_workbook(filename = BytesIO(file))

usage:

import openpyxl_extended

book = openpyxl_extended.load_workbook_from_url('https://storage.googleapis.com/pnbx-cdn/pen-campaign/campaigner-template-fr.xlsx')