【问题标题】:Reading contents of excel file in python webapp2在python webapp2中读取excel文件的内容
【发布时间】:2015-07-13 09:55:44
【问题描述】:

我有两个文件,即 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', 'flx1x2@xxx.com', 'xxx-xxx-xxxx'], ['fy1', 'ly2', 'fly1y2@yyy.com', 'yyy-yyy-yyyy'], ['fz1', 'lz2', 'flz1z2@zzz.com', '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) 

有没有办法从blobstore读取excel文件内容,我用下面的代码试过了

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

但它会抛出一些错误 TypeError: 'BlobReader' object has no attribute 'getitem'。

有什么想法吗?谢谢..

【问题讨论】:

标签: python google-app-engine webapp2


【解决方案1】:

查看 xlrd 包文档中 open_workbook 的 doc,似乎当您传递“file_contents”时,它需要一个字符串。

然后您需要考虑将 Blob 转换为字符串,这可以使用 BlobReader.read() 完成,它会为您提供读取数据的字符串。

【讨论】:

  • @Yuvaraj 很高兴为您提供帮助 :)。享受这个平台!
猜你喜欢
  • 1970-01-01
  • 2011-12-01
  • 2022-12-06
  • 2016-08-16
  • 1970-01-01
  • 2013-06-07
  • 2011-09-16
  • 1970-01-01
相关资源
最近更新 更多