【问题标题】:django-import-export import multiple filesdjango-import-export 导入多个文件
【发布时间】:2015-07-17 05:08:24
【问题描述】:

我正在使用 django-import-export 库来导入几本 excel 书籍。但是,我有超过 1,000 本书需要导入数据库。有没有办法选择要上传的文件夹而不是选择和上传每个单独的文件?我已经完成了这里的教程:https://django-import-export.readthedocs.org/en/latest/getting_started.html#admin-integration 但我无法找到我的问题的答案。

任何帮助将不胜感激。

【问题讨论】:

    标签: django-import-export


    【解决方案1】:

    主要面向未来的观众发布。目前,django_import_export 仅导入单个 Excel 工作簿的活动/第一个工作表。但是,代码很容易修改和缓解这个问题。在forms.py 中,有ImportForm,这是从管理员导入时使用的。只需将 import_file 字段更改为以下内容:

    import_file = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': 
                                 True}),
                                 label=_('File to import')
                                 )
    

    此表格用于admin.py 处理文件数据。将链接的行更改为:

    import_files = request.FILES.getlist('import_file')
    for import_file in import_files:
        ...
    

    现在剩下的就是将base_formats.py 中的导入过程修改为XLSXLSX 格式。两者的变化几乎相同,我将在此处概述XLS

    不要使用第一张工作表,而是在工作表上运行 for 循环并将数据附加到数据集。

    dataset = tablib.Dataset()
    first_sheet = True    # If you keep all correct headers only in first sheet
    for sheet in xls_book.sheets():
        if first_sheet:
            dataset.headers = sheet.row_values(0)
        first_sheet = False
        for i in moves.range(1, sheet.nrows):
            dataset.append(sheet.row_values(i))
    return dataset
    

    对于 XLSX,循环将在 xlsx_book.worksheets 上运行。休息类似于xls

    这将允许您选择多个 Excel 工作簿并导入工作簿的所有工作表。我知道理想的解决方案是导入一个zip 文件,以使用单个bulk_create 创建所有数据,但目前这很好用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多