Django导出简单电子表格
项目描述
从Django 1.8+导出简单电子表格
文档
本模块包含一些函数,这些函数接受(标题,行)对,并返回包含XLSX或CSV下载和Django管理操作(可以添加到任何ModelAdmin以进行通用导出)的HttpResponses。它提供了两个函数(export_to_csv_response 和 export_to_xlsx_response),这些函数接受一个文件名、一个列标题列表和一个Django QuerySet、类似列表的对象或生成器,并返回一个响应。
目标
本项目的目标不是成为一个通用的电子表格操作库。唯一的目标是快速、安全地导出数据。
API故意设计得简单,让您完全控制标题或数据的显示和格式。 flatten_queryset 对仅两种类型的数据有特殊处理: None 将转换为空字符串,而 date 或 datetime 实例将使用 isoformat() 进行序列化。所有其他值都将指定为文本数据类型,以避免在值与当前区域设置中的日期相似时在Excel中损坏数据。
Unicode安全性:输入值,包括惰性对象,都使用Django的force_text函数进行转换,并将始终以UTF-8格式输出。
性能:已知代码可以处理多达数十万行的数据集。CSV响应使用StreamingHttpResponse,使用最少的内存,并非常快速。Excel (XLSX)响应不能流式传输,但xlsxwriter是较快的实现之一,并且启用了内存大小优化。
快速入门
安装django-tabular-export
pip install django-tabular-export
然后在项目中使用它
from tabular_export import export_to_csv_response, export_to_xlsx_response, flatten_queryset def my_view(request): return export_to_csv_response('test.csv', ['Column 1'], [['Data 1'], ['Data 2']]) def my_other_view(request): headers = ['Title', 'Date Created'] rows = MyModel.objects.values_list('title', 'date_created') return export_to_excel_response('items.xlsx', headers, rows) def export_using_a_generator(request): headers = ['A Number'] def my_generator(): for i in range(0, 100000): yield (i, ) return export_to_excel_response('numbers.xlsx', headers, my_generator()) def export_renaming_columns(request): qs = MyModel.objects.filter(foo="…").select_related("…") headers, data = flatten_queryset(qs, field_names=['title', 'related_model__title_en'], extra_verbose_names={'related_model__title_en': 'English Title'}) return export_to_csv_response('custom_export.csv', headers, data)
管理员集成
有两个方便的管理员操作,可以轻松添加“导出到Excel”和“导出到CSV”操作
from tabular_export.admin import export_to_csv_action, export_to_excel_action class MyModelAdmin(admin.ModelAdmin): actions = (export_to_excel_action, export_to_csv_action)
默认列将与您调用ModelAdmin的默认查询集时调用values_list获得的列相同,该查询集由ModelAdmin.get_queryset()返回。如果您想自定义此内容,只需在ModelAdmin上声明一个新的操作,该操作执行所需的所有数据准备即可。
from tabular_export.admin import export_to_excel_action class MyModelAdmin(admin.ModelAdmin): actions = ('export_batch_summary_action', ) def export_batch_summary_action(self, request, queryset): headers = ['Batch Name', 'My Computed Field'] rows = queryset.annotate("…").values_list('title', 'computed_field_name') return export_to_excel_response('batch-summary.xlsx', headers, rows) export_batch_summary_action.short_description = 'Export Batch Summary'
调试
将TABULAR_RESPONSE_DEBUG = True设置会导致所有视图返回HTML表格
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
django-tabular-export-1.1.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | effceddfb542b046b77e7b12e7bd8ec92a5b4ff2a9562ef0aec362e276d1b6dd |
|
MD5 | 800f0366547ce2a6884bb36ac30196ab |
|
BLAKE2b-256 | de8230625049de4b1303eef2cc54559407037534e023bf4dd07f3d4b01a5e7e9 |
django_tabular_export-1.1.0-py2.py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | ee4c9c41ce721d7f3c7c13853c5f76ed687a52fa1f96335fc6f9d79bb3d9ca4d |
|
MD5 | 5d99ba2b29d26260369bd2732f95c095 |
|
BLAKE2b-256 | af8cf9211156c3f690380e9f1b32f36ab317119d30611b8efc8fba185ca56772 |