上传&编码.xls文件Python Web.py

时间:2014-02-04 20:02:10

标签: python excel encoding utf-8 web.py

我正在尝试创建一个Web应用程序,让用户上传一个.xls文件,然后将该upload.xls文件提供给我的程序,该文件读取并解析它。我目前在Web.py框架上使用Python 2.7。

但是,我遇到了Excel文件的utf-8编码问题。这种方法似乎只适用于.txt& .csv文件,但是当我尝试图像或.pdf它们不起作用时,所以我不确定web.py内置的库是否不支持Excel文件。当我上传Excel文件时,它只是吐出不可读的内容,如下所示:

■♠♠☺☻☺☻╒╒£。←►ô+,∙«0░☺H↨P♂X  ♀ï☻♦♥♫♂♂♂♂▲►☺Sheet1    ▲♂工作表♥☺

这是我的代码:

 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'编解码器无法解码   位置0中的字节0xd0:序数不在范围内(128)

奇怪的是,我知道将其编码为utf-8适用于我的应用程序,该应用程序不是基于Web的或使用web.py文件上载方法。所以我似乎无法看到这里的问题。

例如:

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

使用xlrd和xlwt python-excel方法完美地工作。

有什么建议吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

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