从django生成excel表
django_excel_templates的Python项目详细描述
Django MS Excel生成器旨在创建一个模板系统,用于生成 视图的excel文档(而不是html)。
- simple case:嗅探模型并生成excel表;
- medium case:探查模型,生成excel表,并应用预定的样式(字体、颜色、布局)
- {STR 1 }高级案例< /强>:取模型并设置自定义样式或修改现有
安装
您有两个选项:
轻松安装软件包和所有依赖项(如果尚未安装到lib/python/:
easy_install django_excel_templates
下载并解压软件包;运行:
python setup.py install
示例
testobj在下面的示例中是django.db.models.query.queryset instance
simple: 创建excelreport实例,添加excel工作表,添加queryset以进行分析:
>>> from django_excel_templates import * >>> report = ExcelReport() >>> report.addSheet("TestBasic") >>> report.addQuerySet(testobj, REPORT_HORZ, addheader=True)
medium(逐个创建样式): 创建ExcelStyle实例以指定样式(有关可用方法和样式选项,请参阅帮助(ExcelStyle)), 创建ExcelFormatter实例,添加样式:
>>> report.addSheet("TestStyle") >>> style = ExcelStyle() >>> style.set_alignment(horz=3, wrap=1) >>> style.set_font(font_color='000000', bold=True, italic=True) >>> style.set_border(border_color='000000', border_style=5) >>> style.set_pattern(pattern_color='339933', pattern=1) >>> formatter = ExcelFormatter() >>> formatter.addBodyStyle(style=style) >>> report.addFormatter(formatter) >>> report.addQuerySet(testobj, orientation=REPORT_HORZ, addheader=True)
medium(一次创建所有样式):
>>> report.addSheet("TestStyle2") >>> headerstyle = ExcelStyle(font_color='00FF00', shadow=True, underline=True, pattern_color='000000', pattern=1, border_style=5, border_color='FFFFFF') >>> col_style = ExcelStyle(font_color='FFFFFF') >>> formatter.addHeaderStyle(headerstyle) >>> formatter.addColunmStyle('column_name', style=col_style) >>> report.addQuerySet(testobj, REPORT_HORZ, True)
高级: 更改现有样式,设置自定义样式,调整列样式和宽度:
>>> report.addSheet("ModifyStyle") >>> style.set_font(font_color='000000', bold=False, underline=True) >>> style.set_border(border_color='330099', border_style=6) >>> style.set_pattern(pattern_color='FFFFFF', pattern=1) >>> colstyle.set_pattern(pattern_color='FFFF33', pattern=1) >>> formatter.setWidth('column1_name, column2_name', width=600) >>> report.addQuerySet(testobj, REPORT_HORZ, True)
要使django.http.httpresponse脱离report,并告诉broswer将其视为excel附件:
>>> response = HttpResponse(report.writeReport(), mimetype='application/ms-excel') >>> response['Content-Disposition'] = 'attachment; filename=foo.xls'