Форум сайта python.su
Необходим пример выгрузки html таблицы в xls файл. В инете поискал вообще не чего не понятно.
Понятно что желательно, чтобы на html странице была только одна таблица(отчет) в необходимой форме.
А какой код писать в views.py можете примерчики залить. Заранее благодарен.
Офлайн
А может лучше использовать CSV? В Экслевские таблицы такие данные импортируются элементарно.
Офлайн
а можно элементарный примерчик, в принципе я думаю пара щелчков мышью для пользователя не будет прямо таки сложной.
Офлайн
http://docs.djangoproject.com/search/?q=csv&release=5
как раз на пару “щелчков”.
Офлайн
спс, что то я не подумал что в документации могут быть интересующие сведения.
Офлайн
Когда я в одном проекте делал выгрузку данных в CSV, то обошёлся простым join'ом и ручным формированием ответа, без использования всяких специализированных модулей. :)
Офлайн
Господа вопрос, все сделал все красиво у меня стоит Exel 2010, как я понял utf-8 схавать для него не проблема.
В базе все храниться в utf-8.
Вывел все в файл, на всех старых офисах видимо поддержка utf-8 не предусмотрена((
Решил использовать метод encode и получил следующую ошибку: ‘SxemaOtcheta’ object has no attribute ‘encode’ и указывает на строку z=qsadds.encode('cp1251')
Где моя ошибка?? вроде все красиво в строку поместил значение списка, строку попытался перевести в другую кодировку
def po_vsem_otdel(request):
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=somefilename.csv'
qwerty2 = NazvaniePodrazdelenia.objects.values_list('id', flat=True)
q2 = [int(azc) for azc in qwerty2]
csv_data = []
csv_data_1 = []
chis = []
g=0
i=0
for j in q2:
for p in SxemaOtcheta.objects.filter( nazvanie_otch = int(request.POST.get('formaotcheta'))):
chis.append(p)
csv_data.append(p)
if g==0:
x=len(chis)
g=x
csv_data.append('\n')
else:
x=g
for h in range(x): csv_data.pop()
for p in TableZnachenui.objects.filter( nazvanie_otcheta = int(request.POST.get('formaotcheta')), nazvanie_pod=j):
i+=1
csv_data.append(p)
if x==i:
for p in NazvaniePodrazdelenia.objects.filter( id=j):
csv_data.append(p)
csv_data.append('\n')
i=0
m=0
for m in range(len(csv_data)):
qsadds=''
z=''
qsadds=csv_data[m]
z=qsadds.encode('cp1251')
csv_data_1.append(z)
t = loader.get_template('my_template_name.txt')
c = Context({
'data': csv_data_1,
})
response.write(t.render(c))
return response
Отредактировано (Май 6, 2011 17:58:41)
Офлайн
Человеческим языком же написано, что вы пытаетесь изменить кодировку объекта, а не строки. Зачем вы пихаете туда объект целиком, а не поле?
Офлайн
fth
это ваще не как проблему не решает, ну принял я объект тут лан моя ошибка. Исправил на поле.
for m in range(len(csv_data)):
qsadds = ''
z = ''
qsadds = csv_data[m]
z = qsadds.encode('CP1251')
csv_data_1.append(z)
t = loader.get_template('my_template_name.txt')
c = Context({
'data': csv_data_1,
Офлайн
все решил проблему, отказавшись использовать этот дурацкий шаблон
Офлайн