Чтение содержимого файла excel в python webapp2

У меня есть два файла, а именно 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».

Любые идеи? Спасибо..


person ysr    schedule 13.07.2015    source источник
comment
Ну, есть python-excel.org , github.com/python-excel и xlwings.org , первые три результата поиска Google для python excel   -  person Brent Washburne    schedule 13.07.2015
comment
Прочитайте содержимое из хранилища BLOB-объектов и используйте xlrd.open_workbook(file_contents=content_from_blob_store))   -  person gipsy    schedule 14.07.2015


Ответы (1)


Изучив документ для open_workbook в документе пакета xlrd, он кажется, что когда вы передаете «file_contents», он ожидает строку.

Затем вам нужно изучить возможность преобразования Blob в String, что можно сделать с помощью BlobReader.read(), который дает вам строку считанных данных.

person Patrice    schedule 17.07.2015
comment
@Yuvaraj рад помочь :). Наслаждайтесь платформой! - person Patrice; 18.07.2015