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')