Django / Python: сохранить таблицу HTML в Excel - PullRequest
5 голосов
/ 14 апреля 2010

У меня есть таблица HTML, которую я хотел бы экспортировать в файл Excel. У меня уже есть возможность экспортировать таблицу в файл IQY, но я бы предпочел что-то, что не позволяло пользователю обновлять данные через Excel. Мне просто нужна функция, которая делает снимок таблицы в тот момент, когда пользователь нажимает ссылку / кнопку.

Я бы предпочел, чтобы функция была ссылкой / кнопкой на странице HTML, которая позволяет пользователю сохранять результаты запроса, отображаемые в таблице. Также было бы хорошо, если бы форматирование из HTML / CSS можно было сохранить. Есть ли способ сделать это вообще? Или что-то, что я могу изменить с помощью IQY?

Я могу попытаться предоставить более подробную информацию, если это необходимо. Заранее спасибо.

Ответы [ 3 ]

7 голосов
/ 14 апреля 2010

Вы можете использовать отличный модуль xlwt . Он очень прост в использовании и создает файлы в формате xls (Excel 2003).

Вот (непроверенный!) Пример использования представления Django:

from django.http import HttpResponse
import xlwt

def excel_view(request):
  normal_style = xlwt.easyxf("""
     font:
         name Verdana
     """) 
  response = HttpResponse(mimetype='application/ms-excel')
  wb = xlwt.Workbook()
  ws0 = wb.add_sheet('Worksheet')
  ws0.write(0, 0, "something", normal_style)
  wb.save(response)
  return response
2 голосов
/ 14 апреля 2010

Используйте CSV. В Python есть модуль ("csv") для его генерации, и Excel может читать его самостоятельно.

0 голосов
/ 14 апреля 2010

Excel поддерживает открытие HTML-файла, содержащего таблицу в виде электронной таблицы (даже с форматированием CSS).

В основном вы должны обслуживать этот контент HTML из представления django с типом контента application/ms-excel, как сказал Роберто.

Или, если вам хочется приключений, вы можете использовать что-то вроде Downloadify , чтобы подготовить файл для загрузки на стороне клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...