'int'对象在django-excel中没有属性'encode'

时间:2017-03-17 20:25:47

标签: python django excel

我正在使用django-excel设置导出工具以实现优势,但我遇到属性错误'int' object has no attribute 'encode'时遇到问题 我的form转换为excel,有人可以解释我为什么会收到此错误,这里有完整的追溯link

from django.http import HttpResponseBadRequest
from django.http import HttpResponseForbidden
from django.views.generic import FormView
from django import forms

import django_excel as excel


class UploadFileForm(forms.Form):
    file = forms.FileField()
    ignore_first_columns = forms.IntegerField()


class ExportMailXls(FormView):
    template_name = 'vinclucms_sales/export_email/export_sales_email_xls.html'
    form_class = UploadFileForm

    def get(self, request, *args, **kwargs):
        form_class = self.get_form_class()
        form = self.get_form(form_class)

        if request.user.is_staff:
            return self.render_to_response(
                self.get_context_data(form=form,
                                      can_submit=True,))
        else:
            return HttpResponseForbidden()

    def post(self, request, *args, **kwargs):
        form_class = self.get_form_class()
        form = self.get_form(form_class)
        if request.user.is_staff:
            if form.is_valid():
                column_ignore_index = form.cleaned_data['ignore_first_columns']
                if not column_ignore_index:
                    column_ignore_index = 0
                filehandle = request.FILES['file']
                xls_book = filehandle.get_book()
                for sheet in xls_book:
                    for k1, v1 in enumerate(sheet.rows()):
                        if k1 > 0:
                            for k2, v2 in enumerate(v1):
                                if k2 >= column_ignore_index:
                                    uni_str_escaped = v2.encode("unicode-escape") \
                                        .replace('\\x','\\u00') \
                                        .replace('\\\\u','\\u')
                                    sheet[k1, k2] = uni_str_escaped
                    return excel.make_response(xls_book, "xls", file_name="converted")
            else:
                return HttpResponseBadRequest()
        else:
            return HttpResponseForbidden()

追溯:

Traceback:
File "/home/vagrant/virtualenv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/vagrant/virtualenv/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  22.                 return view_func(request, *args, **kwargs)
File "/home/vagrant/virtualenv/local/lib/python2.7/site-packages/django/views/generic/base.py" in view
  71.             return self.dispatch(request, *args, **kwargs)
File "/home/vagrant/virtualenv/local/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch
  89.         return handler(request, *args, **kwargs)
File "/home/vagrant/vincluos/VincluCMSProject/vinclucms_sales/views/export_sales_email_xls.py" in post
  44.                                     uni_str_escaped = v2.encode("unicode-escape") \

Exception Type: AttributeError at /sales/export_sales_mail_xls/
Exception Value: 'int' object has no attribute 'encode'

0 个答案:

没有答案