Загрузка и кодирование.xls файла Python Web.py

Я пытаюсь создать веб-приложение, которое позволяет пользователям загружать файл.xls, который я затем беру, и загружать этот файл uploaded.xls в мою программу, которая читает и анализирует его. В настоящее время я использую Python 2.7 в рамках Web.py.

Однако у меня возникли проблемы с кодировкой utf-8 для файлов Excel. Этот метод, кажется, работает только для файлов.txt и.csv, но когда я пробую изображения или.pdf, они не работают, поэтому я не уверен, что встроенная библиотека web.py просто не поддерживает файлы Excel, Когда я загружаю файл Excel, он просто выплевывает нечитаемый контент, как показано ниже:

■ ♠ ☺☻ ☺ ☻╒═╒ £. ← ► +,∙ "0 ░ ☺ H ↨ P ♂ X ♀ ï ☻ Σ♦ ♥ ♫ ♂ ♂ ♂ ▲► ☺ Лист1 ▲ ♂ Рабочие листы ♥ ☺

Вот мой код:

 class index:
    def POST(self):
        x = web.input(calendar_file={}, ref_id='')
        if x:
            ref_id = (x.ref_id if x.ref_id else "")
            filepath=x.calendar_file.filename # replaces the windows-style slashes with linux ones.
            fn=filepath.split('/')[-1] # splits the and chooses the last part (the filename
            filename = "%s/Users/jl98567/Documents/xMatters_calendar_app/test/" + fn
            fullpath = os.path.join('c:', filename % (ref_id))
            content = x["calendar_file"].file.read()
            with open(fullpath, 'w') as f_out:
                if not f_out:
                    raise Exception("Unable to open %s for writing. " % (fullpath))
                f_out.write(content)
        print x['calendar_file'].value
        raise web.seeother('/upload?ref_id=%s&filename=%s' % (ref_id, filename))

Теперь, когда я пытаюсь кодировать:

print x['calendar_file'].value.encode('utf-8')

Я получаю следующую ошибку:

Кодек at / 'ascii' не может декодировать байт 0xd0 в позиции 0: порядковый номер не в диапазоне (128)

Странно то, что я знаю, что кодирование его в utf-8 работает в моем приложении, которое не основано на веб-технологиях или использует метод загрузки файла web.py Так что я не могу понять, в чем здесь проблема.

Например:

content = str(sheet.cell(row,0).value.encode('utf8'))

это прекрасно работает с использованием методов xlrd и xlwt python-excel.

Какие-либо предложения?

Большое спасибо!

1 ответ

    print unicode(x['calendar_file'].value, 'utf-8')
Другие вопросы по тегам