如何在Appengine上用xlrd读取excel文件

EmF*_*eld 2 python google-app-engine xlrd flask

我在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
Run Code Online (Sandbox Code Playgroud)

我意识到这可能是因为没有上传并将其保存为文件.对此有任何解决方法吗?这也有助于其他许多人.感谢任何帮助,thx

更新:找到我在下面发布的解决方案.对于那些与使用xlrd混淆的人可以参考我发布的开源项目repo.关键是传递文件的内容而不是文件名

EmF*_*eld 5

最后找到解决方案

这是我如何做到的.我没有保存文件,而是读取文件的内容,让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
Run Code Online (Sandbox Code Playgroud)

工作得很好,并将excel文件转换为JSON格式.如果要输出json,只需使用json.dumps().

完整的代码示例可以在https://github.com/cjhendrix/HXLator/blob/master/gae/main.py找到,它具有xlrd的完整实现以及如何使用数据.

Thx指针