读取 python webapp2 中 excel 文件的内容
Reading contents of excel file in python webapp2
我有两个文件,即 sample.csv 和 sample.xlsx,所有这些文件都存储在 blobstore.I 我能够读取 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'。
有什么想法吗?谢谢..
查看 xlrd 包文档中 open_workbook 的 doc,似乎当您传递 "file_contents" 时,它期待一个字符串。
然后您需要考虑将 Blob 转换为字符串,这可以通过 BlobReader.read() 完成,它会为您提供读取数据的字符串。
我有两个文件,即 sample.csv 和 sample.xlsx,所有这些文件都存储在 blobstore.I 我能够读取 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'。
有什么想法吗?谢谢..
查看 xlrd 包文档中 open_workbook 的 doc,似乎当您传递 "file_contents" 时,它期待一个字符串。
然后您需要考虑将 Blob 转换为字符串,这可以通过 BlobReader.read() 完成,它会为您提供读取数据的字符串。