主要面向未来的观众发布。目前,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 中的导入过程修改为XLS 和XLSX 格式。两者的变化几乎相同,我将在此处概述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 创建所有数据,但目前这很好用。