2014-02-04 5 views
0

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

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

■ ♠ ☺☻ ☺☻ ☺ ☻╒═╒ £. ← ►ô +, ∙ «0 ░ ☺ H ↨ P ♂ X ♀ ï ☻ Σ ♦ ♥ ♫ ♂ ♂ ♂ ♂ ▲ ► ☺ Лист1 ▲ ♂ Worksheets ♥ ☺

Вот мой код:

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' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)

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

Например:

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

, что отлично работает с использованием xlrd и xlwt методы питон-первенствовать.

Любые предложения?

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

+0

Что вы пытаетесь достичь путем «кодирования» файла .xls? Это не имеет никакого смысла. – CodeBlue

+0

Я просто пытаюсь устранить эту ошибку выше, которую я получаю. – lovelejess

+0

Но вы, очевидно, получите сообщение об ошибке, если пытаетесь сделать что-то неправильно. Итак, почему вы пытаетесь «кодировать» .xls-файл в первую очередь? – CodeBlue

ответ

0
print unicode(x['calendar_file'].value, 'utf-8') 
Смежные вопросы