我正在使用 django-import-export 库来导入几本 excel 书籍。但是,我有超过 1,000 本书需要导入数据库。有没有办法选择要上传的文件夹而不是选择和上传每个单独的文件?我已经完成了这里的教程:https ://django-import-export.readthedocs.org/en/latest/getting_started.html#admin-integration 但我无法找到我的问题的答案。
任何帮助将不胜感激。
我正在使用 django-import-export 库来导入几本 excel 书籍。但是,我有超过 1,000 本书需要导入数据库。有没有办法选择要上传的文件夹而不是选择和上传每个单独的文件?我已经完成了这里的教程:https ://django-import-export.readthedocs.org/en/latest/getting_started.html#admin-integration 但我无法找到我的问题的答案。
任何帮助将不胜感激。
主要面向未来的观众发布。目前,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:
...
现在剩下的就是为XLS和XLSX格式修改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
,但这目前很好用。