我在使用的AppEngine xlrd。 我用的烧瓶
我不能读取输入文件并将其保存在显示相同的错误信息
代码
def read_rows(inputfile):
rows = []
wb = xlrd.open_workbook(inputfile)
sh = wb.sheet_by_index(0)
for rownum in range(sh.nrows):
rows.append(sh.row_values(rownum))
return rows
@app.route('/process_input/',methods=['POST','GET'])
def process_input():
inputfile = request.files['file']
rows=read_rows(request.files['file'])
payload = json.dumps(dict(rows=rows))
return payload
我意识到,这可能是由未上传并保存为一个文件引起的。 任何对此的解决方法吗? 这将有助于其他许多人。 任何帮助表示赞赏,THX
更新:发现我贴在下面的解决方案。 对于那些混淆使用xlrd可以参考开源项目回购我张贴。 关键是传递文件的内容,而不是文件名
找到一个解决方案终于
这里就是我如何做到这一点。 相反,保存文件的,我读了文件的内容,并让xlrd读它
def read_rows(inputfile):
rows = []
wb = xlrd.open_workbook(file_contents=inputfile.read())
sh = wb.sheet_by_index(0)
for rownum in range(sh.nrows):
rows.append(sh.row_values(rownum))
return rows
很好的工作,打开了Excel文件成JSON-能格式。 如果你想输出的JSON只需使用json.dumps()。
完整的代码示例,可以发现https://github.com/cjhendrix/HXLator/blob/master/gae/main.py和它的功能全面推行xlrd和如何与数据进行工作。
THX为指针
使用:
wb = xlrd.open_workbook(file_contents=inputfile)
要调用的方式open_workbook
希望你传递什么是文件名,而不是一个瓶FileStorage
对象包装的实际文件。
从您的回溯判断。
File "/Users/fauzanerichemmerling/Desktop/GAEHxl/gae/lib/xlrd/init.py", line 941, in biff2_8_load
f = open(filename, open_mode)
您可以尝试改变这一行:
f = filename