Django 读取Excel文件

本文介绍如何使用Django框架实现文件上传功能,并通过xlrd和pandas库解析Excel文件,提供了一段示例代码说明具体操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Django 代码

首先安装xlrd 即

pip3 install xlrd然后需要配置URL配置完URL后视图是这样的

def csv_upload(request):
    data = {'code': 0, 'msg': '', 'data': []}
    if request.method == "POST":
        f = request.FILES['csvFile']
        type_excel = f.name.split('.')[1]
        if type_excel in ['xlsx','xls']:
            # 开始解析上传的excel表格
            wb = xlrd.open_workbook(filename=None, file_contents=f.read())  # 关键点在于这里
            table = wb.sheets()[0]
            nrows = table.nrows  # 行数
            try:
                for i in range(0, nrows):  # 从0开始把表头省略则读取表头信息,如果从1开始则直接读取数据
                    rowValues = table.row_values(i)  # 一行的数据
                    print(rowValues[0],rowValues[1],rowValues[2])  # 这里可以进行其他的操作
            except Exception as e:
                data["msg"] = '出现错误....'
                return JsonResponse(data)
            data["code"] = 1
            data["msg"] = "上传成功"
            return JsonResponse(data)
        data["msg"] = '上传文件格式不是xlsx'
        return JsonResponse(data)
    data["msg"] = '不是post请求'
    return JsonResponse(data)

另外还有一种读取Excel文件的更简便的方法就是利用强大的pandas读取Excel非常简便

Django中处理Excel文件上传并读取其内容,通常需要借助第三方库,如`django_excel`、`openpyxl`或`pandas`等。以下是基本步骤: 1. **安装依赖库**: - 如果你想直接读取Excel文件数据,可以使用`openpyxl`(处理XLSX文件)或`xlrd`(处理xls文件)。 ``` pip install djangorestframework openpyxl # 或者 xlrd ``` 2. **模型定义**: 首先,在你的Django应用中,创建一个模型来存储文件信息,比如包含文件名和大小等字段。 3. **视图函数**: 使用Django REST Framework(DRF)或其他类似框架编写一个接收文件上传请求的视图。例如,你可以使用`FileField`接收文件,并将其保存到服务器的某个位置。 ```python from rest_framework import serializers, viewsets from .models import FileUpload class FileUploadSerializer(serializers.ModelSerializer): class Meta: model = FileUpload fields = ['file', 'filename'] class FileUploadViewSet(viewsets.ModelViewSet): queryset = FileUpload.objects.all() serializer_class = FileUploadSerializer def create(self, request, *args, **kwargs): file_data = request.data.get('file') # 这里假设文件已经被分片或处理成request.FILES['file'] file_upload = FileUpload(file=file_data) file_upload.filename = file_data.name file_upload.save() return Response({'detail': 'File uploaded successfully.'}) ``` 4. **读取文件内容**: 一旦文件被上传,你可以使用`openpyxl`或`xlrd`来打开并读取内容。这通常涉及到从数据库中获取已上传文件的路径,然后解析文件。 ```python def read_excel_content(upload_id): file_upload = FileUpload.objects.get(id=upload_id) if file_upload.file.name.endswith('.xlsx'): # 确定是否为XLSX文件 import openpyxl wb = openpyxl.load_workbook(filename=file_upload.file.path) sheet = wb.active data = [row.values for row in sheet.iter_rows()] elif file_upload.file.name.endswith('.xls'): import xlrd workbook = xlrd.open_workbook(file_upload.file.path) sheet = workbook.sheet_by_index(0) # 默认第一个sheet data = [[cell.value for cell in row] for row in sheet.get_rows()] else: raise ValueError("Unsupported file format.") return data ``` 5. **安全性和权限**: 考虑文件上传的安全性,确保只允许用户上传他们有权访问的文件,并对文件内容进行适当的验证和清理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值