2015-07-13 124 views
2

我有兩個文件,即sample.csv和sample.xlsx,所有這些文件都存儲在blobstore.I我能夠讀取csv文件(這是在Blob存儲)的使用記錄下面的代碼閱讀內容webapp2的

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) 

有什麼辦法來讀取Blob存儲Excel文件的內容,我都用下面的代碼

blobReader = blobstore.BlobReader(blobKey) 
    uploadedFile = BlobIterator(blobReader) 
    book = xlrd.open_workbook(file_contents=uploadedFile) 
        (or) 
    book = xlrd.open_workbook(file_contents=blobReader) 

嘗試過,但它引發的一些錯誤類型錯誤:「BlobReader」對象有沒有屬性'getitem'。

任何想法?謝謝..

+1

嗯,有http://www.python-excel.org/,https://github.com/python-excel和http://xlwings.org/,谷歌搜索「下的前三個結果蟒蛇創先爭優」 –

+1

閱讀從團塊存儲的內容和使用xlrd.open_workbook(file_contents = content_from_blob_store)) – gipsy

回答

0

尋找在xlrd軟件包文檔中的open_workbook的doc,似乎當你通過「file_contents」,它期待一個字符串。

然後,你需要尋找到打開的Blob爲String,它可以與BlobReader.read()來完成,它給你讀取數據的字符串。

+0

它的工作。謝謝 – ysr

+0

@Yuvaraj高興幫助:)。享受平臺! – Patrice