Как вы читаете файлы Excel с Xlrd на Appengine

Я использую xlrd в appengine. Я использую колбу

Я не могу прочитать входной файл, и он продолжает показывать одно и то же сообщение об ошибке

код

<code>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
</code>

Я понимаю, что это может быть вызвано не загрузкой и сохранением файла. Любой обходной путь на этом? Это помогло бы и многим другим. Любая помощь приветствуется, спасибо

Обновление: нашел решение, которое я разместил ниже. Для тех, кто путается с использованием xlrd, можете обратиться к репозиторию проекта с открытым исходным кодом, который я разместил. Ключ передает содержимое файла вместо имени файла

Ответы на вопрос(3)

Судите по вашему следу.

File "/Users/fauzanerichemmerling/Desktop/GAEHxl/gae/lib/xlrd/init.py", line 941, in biff2_8_load
    f = open(filename, open_mode)

Вы можете попробовать изменить эту строку на:

f = filename
 06 мая 2012 г., 20:30
этот код находится в сторонней библиотеке, и просто произвольное изменение его так, чтобы он принимал файл вместо имени файла, может привести к ужасным последствиям.

Использование:

wb = xlrd.open_workbook(file_contents=inputfile)

То, как вы вызываетеopen_workbook ожидает, что вы передаете имя файла, а не колбуFileStorage объект, оборачивающий фактический файл.

 EmFeld11 июн. 2012 г., 08:41
это действительно помогло мне. Мне нужно получить содержимое вместо имени файла. Таким образом, пришел inputfile.read (). Большое спасибо
Решение Вопроса

Наконец-то найти решение

вот как я это делаю. Вместо сохранения файла я читаю содержимое файла и позволяю 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 и как работать с данными.

Спасибо за указатели

Ваш ответ на вопрос