主に将来の閲覧者向けに投稿します。現在、django_import_export
単一の Excel ワークブックのアクティブ/最初のシートのみをインポートします。ただし、コードを変更してこの問題を軽減するのは簡単です。forms.pyには、ImportForm
admin からのインポート時に使用されるものがあります。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
が、今のところはこれで十分です。