4

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

任何帮助将不胜感激。

4

1 回答 1

1

主要面向未来的观众发布。目前,django_import_export仅导入单个 Excel 工作簿的活动/第一个工作表。但是,代码很容易修改和缓解这个问题。在forms.pyImportForm中,从管理员导入时使用的是哪一个。只需将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:
    ...

现在剩下的就是为XLSXLSX格式修改base_formats.py中的导入过程。两者的变化几乎相同,我将在这里概述一个。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,但这目前很好用。

于 2019-03-10T15:18:04.833 回答