Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 20, 2011 21:09:35

Raziel
От:
Зарегистрирован: 2011-03-14
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Django и Pyexcelerator

Необходим пример выгрузки html таблицы в xls файл. В инете поискал вообще не чего не понятно.
Понятно что желательно, чтобы на html странице была только одна таблица(отчет) в необходимой форме.
А какой код писать в views.py можете примерчики залить. Заранее благодарен.



Офлайн

#2 Апрель 21, 2011 08:34:02

fth
От:
Зарегистрирован: 2010-07-26
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Django и Pyexcelerator

А может лучше использовать CSV? В Экслевские таблицы такие данные импортируются элементарно.



Офлайн

#3 Апрель 21, 2011 08:57:19

Raziel
От:
Зарегистрирован: 2011-03-14
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Django и Pyexcelerator

а можно элементарный примерчик, в принципе я думаю пара щелчков мышью для пользователя не будет прямо таки сложной.



Офлайн

#4 Апрель 21, 2011 10:08:34

aabp
От:
Зарегистрирован: 2011-03-14
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Django и Pyexcelerator

http://docs.djangoproject.com/search/?q=csv&release=5

как раз на пару “щелчков”.



Офлайн

#5 Апрель 21, 2011 10:24:16

Raziel
От:
Зарегистрирован: 2011-03-14
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Django и Pyexcelerator

спс, что то я не подумал что в документации могут быть интересующие сведения.



Офлайн

#6 Апрель 21, 2011 12:21:48

fth
От:
Зарегистрирован: 2010-07-26
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Django и Pyexcelerator

Когда я в одном проекте делал выгрузку данных в CSV, то обошёлся простым join'ом и ручным формированием ответа, без использования всяких специализированных модулей. :)



Офлайн

#7 Май 4, 2011 20:37:40

Raziel
От:
Зарегистрирован: 2011-03-14
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Django и Pyexcelerator

Господа вопрос, все сделал все красиво у меня стоит 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)

Офлайн

#8 Май 6, 2011 08:39:16

fth
От:
Зарегистрирован: 2010-07-26
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Django и Pyexcelerator

Человеческим языком же написано, что вы пытаетесь изменить кодировку объекта, а не строки. Зачем вы пихаете туда объект целиком, а не поле?



Офлайн

#9 Май 6, 2011 19:13:48

Raziel
От:
Зарегистрирован: 2011-03-14
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Django и Pyexcelerator

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,
Функция стала выводить в файл все английские буквы.
Сперва я грешил на кодировку файла, заменил ее на кириллицу cp1251.
Ни чего не изменилось((



Офлайн

#10 Май 7, 2011 00:45:19

Raziel
От:
Зарегистрирован: 2011-03-14
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Django и Pyexcelerator

все решил проблему, отказавшись использовать этот дурацкий шаблон



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version