Формирование документов Word и Excel на сервере Django

Используя фреймворк Django, как основу построения корпоративного приложения мы натолкнулись на необходимость формирования документов Word и Excel. Как это сделать без использования средств MS Office я описал в этом посте http://webveter.blogspot.com/2007/10/ms-office-ms-office.html.
Теперь сделаем это все под Django. Весь процесс создания приложений в этом фреймворке описывать не буду. Это в доках.
Идея заключается в следующем: использовать систему шаблонов Django для формирования документов Word и Excel.
Архив с исходниками:

Устанавливается так:
1. Распаковать архив в папку с готовым проектом.
2. Настроить в проекте urls.py на обработку примера.
У меня это выглядит так: (r'^project/testprn/$', 'project.testprn.views.testprn')
3. Поместить файл testprn.html (находится в подпапке print) в папку с шаблонами проекта (определяется переменной TEMPLATE_DIRS в файле settings.py)
Собственно все. Смотрим в браузере http://localhost:8000/project/testprn/
А теперь как это работает.
В файле views.py в методе testprn описаны некоторые переменные которые необходимо вставить в шаблон и сгенерировать документ Word.
Далее запускаем Word и создаем документ в том виде, в котором он должен формироваться. В нужных местах расставляем теги. Пример такого документа находится в папке print и называется testprn.doc.
После этого сохраняем документ как документ html (тот самый testprn.html). Шаблон практическм готов. Word конечно мусора в файл напихал и если есть желание - можно почистить. В этом примере я на это не заморачивался. Единственное я проверил теги Django. В порочке мест Word вставил свои теги между фигурными скобками.
Далее все как при стандартной работе с шаблонами в Django. Необходимо лишь в HTTP-пакет добавить заголовки, которые укажут как броузеру себя вести :)
У меня это строки:
Response['Content-Disposition'] = 'filename=testprn.doc'
Response['Content-Type'] = 'application/download'
Это все. Таким же способом можно сформировать документ любой сложности. Можно также сформировать документ Excel.
Кроме того этот метод подойдет для формирования документов в других фреймворках на любых языках: PHP, Perl, ...

Продолжение поста:
MS Word и web-фреймворк. Продолжение

7 комментариев:

Unknown комментирует...

Такого файла не существует или он был удален из-за нарушения авторских прав.

webveter комментирует...

Обычно файл-хостинги хранят файл 30 дне после его последней закачки.
Перевыложил

Анонимный комментирует...

Привет. У меня пробелма с кодировкой.

Exception Type: UnicodeDecodeError

Unicode error hint

The string that could not be encoded/decoded was: itle>������


Ж(

Если поменять кодировку в шаблоне .html на утф8 - все нормально, тока када в ворде открывается - кодировка не та.
Что делать??

webveter комментирует...

У меня в header есть такое:
〈meta http-equiv=Content-Type content="text/html; charset=windows-1251"〉

Admin комментирует...

Перевыложите пожалуйста файл!

webveter комментирует...

перевыложил

Иван комментирует...

Есть еще более интересная штука https://github.com/NetAngels/django-webodt