Найти - Пользователи
Полная версия: Django и Pyexcelerator
Начало » Django » Django и Pyexcelerator
1
Raziel
Необходим пример выгрузки html таблицы в xls файл. В инете поискал вообще не чего не понятно.
Понятно что желательно, чтобы на html странице была только одна таблица(отчет) в необходимой форме.
А какой код писать в views.py можете примерчики залить. Заранее благодарен.
fth
А может лучше использовать CSV? В Экслевские таблицы такие данные импортируются элементарно.
Raziel
а можно элементарный примерчик, в принципе я думаю пара щелчков мышью для пользователя не будет прямо таки сложной.
aabp
http://docs.djangoproject.com/search/?q=csv&release=5

как раз на пару “щелчков”.
Raziel
спс, что то я не подумал что в документации могут быть интересующие сведения.
fth
Когда я в одном проекте делал выгрузку данных в CSV, то обошёлся простым join'ом и ручным формированием ответа, без использования всяких специализированных модулей. :)
Raziel
Господа вопрос, все сделал все красиво у меня стоит 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
fth
Человеческим языком же написано, что вы пытаетесь изменить кодировку объекта, а не строки. Зачем вы пихаете туда объект целиком, а не поле?
Raziel
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.
Ни чего не изменилось((
Raziel
все решил проблему, отказавшись использовать этот дурацкий шаблон
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB