加载并解析xlsx文件

用户9450057

如何继续处理下载的文件?解析成模型

views.py

def model_form_upload(request):
if request.method == 'POST':
    form = DocumentForm(request.POST, request.FILES)
    if form.is_valid():
        form.save()
        return redirect('home')
else:
    form = DocumentForm()
return render(request, 'core/model_form_upload.html', {
    'form': form
})

my model.py

class Document(models.Model):
description = models.CharField(max_length=255, blank=True)
document = models.FileField(upload_to='documents/')
uploaded_at = models.DateTimeField(auto_now_add=True)

class Parameters(models.Model):
par_time = models.DateTimeField('date')
par_recipe = models.CharField(max_length=200)
par_machine = models.CharField(max_length=200)
par_fa = models.CharField(max_length=200)
par_ag_typ = models.CharField(max_length=200)
par_rollennr = models.IntegerField(default=0)
par_definition_id = models.IntegerField(default=0)
par_name = models.CharField(max_length=200)
par_value = models.IntegerField(default=0)

用于下载Excel文件(xlsx)。xlsx中的字段按模型中的描述表示。

一不尝试,我就刚接触Django,却一无所获

波鲁特

首先,您需要一个读取XLSX文件的库。我发现openpxyl最简单。使用进行安装pip install openpyxl

要处理上传的文件,请编写一些功能。类似于下面的代码。

import openpyxl

def handle_parameters_upload(request, file):

    wb = openpyxl.load_workbook(file, read_only=True)
    first_sheet = wb.get_sheet_names()[0]
    ws = wb.get_sheet_by_name(first_sheet)

    data = []

    # Loop over rows and create `Parameters()` objects with column data
    # row_offset=1 is used if you have a header row in your file, you want to skip it 
    # otherwise use 0 or delete the row_offset parameter, since 0 is default
    for row in ws.iter_rows(row_offset=1):
        parameter = Parameters()
        parameter.par_time = row[0].value
        parameter.par_recipe = row[1].value
        parameter.par_machine = row[2].value
        parameter.par_fa = row[3].value
        parameter.par_ag_typ = row[4].value
        parameter.par_rollennr = row[5].value
        parameter.par_definition_id = row[6].value
        parameter.par_name = row[7].value
        parameter.par_value = row[8].value

        data.append(parameter)

    # Bulk create data
    Parameters.objects.bulk_create(data)

    return True

这将打开XLSX文件,从中读取数据并保存到数据库。使用bulk_create()的原因在于,它可以高效地将对象插入数据库中。

调整您的model_form_upload()视图。

def model_form_upload(request):
    if request.method == 'POST':
        form = DocumentForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            handle_file = handle_parameters_upload(request, request.FILES['document'])
            return redirect('home')
    else:
        form = DocumentForm()
    return render(request, 'core/model_form_upload.html', {'form': form})

还可以使用其他库来读取/写入XLSX。我也经常使用pyexcel

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从驱动器中加载xlsx文件

在SSIS中动态加载.xlsx文件

将 xlsx 文件解析为字典

加载NSDictionary解析xml文件

加载文件并解析文档

如何使用Apache POI加载大型xlsx文件?

OpenFileDialog无法加载CSV文件,但可以加载xls / xlsx Excel文件

加载/解析数学编程系统文件

从文件加载XML并进行解析?

推迟加载和解析PrimeFaces JavaScript文件

如何加载和解析JSON文件

Webpack:无法解析模块“文件加载器”

是否可以加载要转换为 HTML 表格的 XLSX 文件,而无需用户浏览该 XLSX 文件?

Webpack 无法解析文件加载器 js 文件

如何在Vert.x文件系统中读取和解析.xlsx文件

如何在Vert.x文件系统中读取和解析.xlsx文件

循环遍历 XML 文件、解析数据以及写入数据帧和 XLSX 文件

无法将.xlsx文件从我的计算机加载到Google Colab

在Windows 7中打开xlsx文件会打开Excel 365,但不会加载文档

如何在Python中加载最初具有.xls文件扩展名的xlsx?

如何在R中下载.xlsx文件并将数据加载到数据框中?

JS xlsx-populate 解析受密码保护的 excel 文件数据

如何在 Javascript 中使用 XLSX 库来解析特定行中的 Excel 文件

使用Apache POI通过流/分页策略将xlsx文件解析为大块

在 Qt 中解析 .xlsx 文件将数据添加到 SQLite DB

如何使用jQuery加载文件并解析标签

从csv文件加载网址列表,并针对相同的数据一一解析

将内存保存到文件并加载而无需解析数据?

加载和解析具有多个JSON对象的JSON文件