我在 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
我意识到这可能是由于没有上传并将其保存为文件造成的。有什么解决方法吗?这也将帮助许多其他人。感谢任何帮助,谢谢
更新:找到了我在下面发布的解决方案。对于那些对使用 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 https://github.com/cjhendrix/HXLator/blob/master/gae/main.py它具有 xlrd 的完整实现以及如何处理数据。
谢谢指点
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)