У меня есть два файла, а именно sample.csv и sample.xlsx, все эти файлы хранятся в blobstore. Я могу читать записи файла csv (который находится в blobstore), используя следующий код
blobReader = blobstore.BlobReader(blob_key)
inputFile = BlobIterator(blobReader)
if inputFile is None:
values = None
else:
try:
stringReader = csv.reader(inputFile)
data = []
columnHeaders = []
for rowIndex, row in enumerate(stringReader):
if(rowIndex == 0):
columnHeaders = row
else:
data.append(row)
values = {'columnHeaders' : columnHeaders, 'data' : data}
except:
values = None
self.response.write(values)
Вывод приведенного выше кода файла sample.csv:
{'columnHeaders': ['First Name', 'Last Name', 'Email', 'Mobile'], 'data': [['fx1', 'lx2', '[email protected]', 'xxx-xxx-xxxx'], ['fy1', 'ly2', '[email protected]', 'yyy-yyy-yyyy'], ['fz1', 'lz2', '[email protected]', 'zzz-zzz-zzzz']]}
Используя пакет xlrd, я могу прочитать содержимое файла excel, но в этом мне нужно указать точное местоположение файла.
book = xlrd.open_workbook('D:/sample.xlsx')
first_sheet = book.sheet_by_index(0)
self.response.write(first_sheet.row_values(0))
cell = first_sheet.cell(0,0)
self.response.write(cell.value)
Есть ли способ прочитать содержимое файла excel из blobstore, я пробовал его со следующим кодом
blobReader = blobstore.BlobReader(blobKey)
uploadedFile = BlobIterator(blobReader)
book = xlrd.open_workbook(file_contents=uploadedFile)
(or)
book = xlrd.open_workbook(file_contents=blobReader)
Но он выдает ошибку TypeError: объект «BlobReader» не имеет атрибута «getitem».
Любые идеи? Спасибо..