django使用xlwt导出excel文件实例代码

  • Post category:Python

下面是详细讲解“django使用xlwt导出excel文件实例代码”的完整实例教程。

1. 安装xlwt

在开始使用xlwt导出Excel文件之前,我们需要确保xlwt已经被正确安装。使用pip命令可以很方便地完成安装:

pip install xlwt

2. 创建Django视图函数

为了导出Excel文件,我们需要编写一个Django视图函数,该函数将在浏览器上采取某些动作并生成Excel文件。

下面是示例代码:

import xlwt
from django.http import HttpResponse

def export_to_excel(request):
    # 设置表格的列名
    columns = ['ID', 'Name', 'Age']
    # 设置默认数据
    data = [
        ['001', 'Tom', 18],
        ['002', 'Jerry', 20],
        ['003', 'Mary', 19]
    ]

    # 创建表格文件
    book = xlwt.Workbook(encoding='utf-8')
    sheet = book.add_sheet('Sheet1')

    # 写入列名
    col_num = 0
    for column in columns:
        sheet.write(0, col_num, column)
        col_num += 1

    # 写入数据
    row_num = 1
    for row in data:
        col_num = 0
        for cell in row:
            sheet.write(row_num, col_num, cell)
            col_num += 1
        row_num += 1

    # 输出Excel文件
    response = HttpResponse(content_type='application/ms-excel')
    response['Content-Disposition'] = 'attachment; filename="data.xls"'
    book.save(response)

    return response

在上面的代码中,我们首先定义了表格的列名和默认数据。然后,我们使用xlwt库创建一个新的Excel文件,并添加一个名为Sheet1的新工作表。接下来,我们将表格数据写入到工作表中。最后,我们将Excel文件输出到HttpResponse的对象中,以便在浏览器中下载。

3. 添加到urls.py中

完成视图函数的编写之后,我们需要将其挂载到Django URL配置中。

from django.urls import path
from . import views

urlpatterns = [
    path('export_to_excel', views.export_to_excel, name='export_to_excel'),
]

现在,当用户访问/export_to_excel URL时,视图函数export_to_excel将自动被调用,导出Excel文件并在浏览器上显示下载选项。

示例说明

下面是两个示例,演示了如何在视图函数中生成不同的Excel文件。

示例1:从数据库中获取数据

在这个示例中,我们从数据库中获取数据,并使用xlwt库将其写入Excel文件中。

import xlwt
from django.http import HttpResponse
from .models import Person

def export_to_excel(request):
    # 查询所有人员信息
    persons = Person.objects.all()

    # 设置表格的列名
    columns = ['ID', 'Name', 'Age']
    # 设置表格数据
    data = []
    for person in persons:
        data.append([person.id, person.name, person.age])

    # 创建表格文件
    book = xlwt.Workbook(encoding='utf-8')
    sheet = book.add_sheet('Sheet1')

    # 写入列名
    col_num = 0
    for column in columns:
        sheet.write(0, col_num, column)
        col_num += 1

    # 写入数据
    row_num = 1
    for row in data:
        col_num = 0
        for cell in row:
            sheet.write(row_num, col_num, cell)
            col_num += 1
        row_num += 1

    # 输出Excel文件
    response = HttpResponse(content_type='application/ms-excel')
    response['Content-Disposition'] = 'attachment; filename="person.xls"'
    book.save(response)

    return response

在这个示例中,我们导入了模型Person,然后从数据库中获取所有人员信息。然后,我们将人员信息转换为data列表,并将其写入到Excel文件中。这个例子演示了如何从数据库中获取数据,并将其写入Excel文件。

示例2:自定义表格格式

在这个示例中,我们使用xlwt库来创建一个自定义的表格格式。

import xlwt
from django.http import HttpResponse

def export_to_excel(request):
    # 设置表格的列名
    columns = ['ID', 'Name', 'Age']
    # 设置表格数据
    data = [
        ['001', 'Tom', 18],
        ['002', 'Jerry', 20],
        ['003', 'Mary', 19]
    ]

    # 设置自定义的表格样式
    style = xlwt.XFStyle()
    font = xlwt.Font()
    font.bold = True
    style.font = font

    # 创建表格文件
    book = xlwt.Workbook(encoding='utf-8')
    sheet = book.add_sheet('Sheet1')

    # 写入列名
    col_num = 0
    for column in columns:
        sheet.write(0, col_num, column, style)
        col_num += 1

    # 写入数据
    row_num = 1
    for row in data:
        col_num = 0
        for cell in row:
            sheet.write(row_num, col_num, cell)
            col_num += 1
        row_num += 1

    # 输出Excel文件
    response = HttpResponse(content_type='application/ms-excel')
    response['Content-Disposition'] = 'attachment; filename="data.xls"'
    book.save(response)

    return response

在这个示例中,我们创建了一个自定义的表格样式,并将其应用到表格中的列名单元格。这个例子演示了如何使用xlwt库来创建一个自定义的表格样式。