2012-04-02 27 views
8

各Excelファイルのデータがデータベースモデルに挿入されるExcelファイルの管理者アップロードを受け入れるには、Django Adminインターフェイスが必要です。 Djangoモデルの管理ページにこのような「アップロード」ボタンを表示するにはどうすればいいですか?ボタンをクリックすると、アップロードが完了したらデータがデータベースに追加される.xlsファイルを選択するように管理者に求められます。django経由でExcelデータをモデルにインポートする

+1

これは素晴らしい質問です。私が知っている別の開発者がDjangoのもとで必要としていたことです。自分自身のプロジェクトの1つに今必要があります。 ExcelのアップロードがDjango Admin Interfaceにどのように反映されるかを共有できるように、質問を再度開く必要があります。 –

+0

ああ - その間に、人々が調べることができる同様の質問がありますが、それにはExcelファイル形式の代わりに.csvファイル形式が含まれます:http://stackoverflow.com/questions/3974620/ –

答えて

4

私は物事のDjango側についてはわかりませんが、xlrdを使用してExcelファイルを読み込んで操作できます。

7

私はこれを行っていますが、ファイルのアップロードを使って簡単なビューを設定しました(実際はこれを直接Django管理ページに追加するよりも理にかなっていますページ= 1つのモデルインスタンス、そしてあなたのExcelに複数のモデルが含まれていると仮定します)。 forms.pyで

、ファイルアップロードフィールドを持つ単純な形views.pyで

class ImportExcelForm(forms.Form): 
    file = forms.FileField(label= "Choose excel to upload")  

、アップロード

def test_flowcell(request): 
    c = RequestContext(request, {'other_context':'details here'}) 
    if request.method == 'POST': # If the form has been submitted... 
     form = ImportExcelForm(request.POST, request.FILES) # A form bound to the POST data 
     if form.is_valid(): # All validation rules pass 
      excel_parser= ExcelParser() 
      success, log = excel_parser.read_excel(request.FILES['file']) 
      if success: 
       return redirect(reverse('admin:index') + "pages/flowcell_good/") ## redirects to aliquot page ordered by the most recent 
      else: 
       errors = '* Problem with flowcell * <br><br>log details below:<br>' + "<br>".join(log) 
       c['errors'] = mark_safe(errors) 
     else: 
      c['errors'] = form.errors 
    else: 
     form = ImportExcelForm() # An unbound form 
    c['form'] = form 
    return render_to_response('sequencing/file_upload.html') 

や他のポストの使用で提案などを処理するためのビューxlrdを実行して、Excelファイルからデータを読み込みます。私はこの

import xlrd 

class ExcelParser(object, excel_name): 
    @transaction.commit_on_success   
    def read_excel(self): 
     wb = xlrd.open_workbook(excel_name) 

     ... 
     do your parsing in here..... 
     ... 

用に別のファイルExcelParser.py(私は追加することができ、データをインポートするにはひどい、とエラーが発生しやすい方法です優れています。私は私の仕事で、それの多くを行う、とにしようとしていますより良い解決法があることを経営陣に納得させてください。)

2

django輸出入が役に立ちます。

adminオブジェクトの2つのボタン "import"と "export"を作成し、xlsを含む多くのタイプの拡張を選択できます。また、実行する前にデータをインポートして確認するように指示します。

INSTALLED_APPSに含めるだけで、アップロードするクラスのインポートエクスポートリソースを作成し、以前に作成したリソースクラスに関連するImportExportModelAdminのサブクラスを作成して、adminにボタンを表示する必要があります。

http://django-import-export.readthedocs.org/en/latest/getting_started.html https://github.com/bmihelac/django-import-export:で

詳細。

関連する問題