2016-09-04 1 views
0

私はFlaskの簡単なアプリケーションを持っています。アップロードされたExcelファイルを処理し、そのデータをWebページに表示したいと思います。これまでにExcelファイルをアップロードするページがありました。Flaskでアップロードファイルを処理する方法は?

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>upload</title> 
    </head> 
    <body> 
    <form method="POST" enctype=multipart/form-data action ="{{url_for('upload')}}"> 
     <input type="file" name="user_file"> 
     <input type="submit"> 
    </form> 
    </body> 
</html> 

upload.html

main.py

from flask import Flask, render_template, send_file, request 
from flask_uploads import UploadSet, configure_uploads, DOCUMENTS, IMAGES 

app = Flask(__name__) 

#the name 'datafiles' must match in app.config to DATAFILES 
docs = UploadSet('datafiles', DOCUMENTS) 
app.config['UPLOADED_DATAFILES_DEST'] = 'static/uploads' 
configure_uploads(app, docs) 

@app.route("/", methods=['GET']) 
def index(): 
    # return send_file("templates/index.html") 
    return render_template('index.html') 

@app.route("/upload", methods = ['GET', 'POST']) 
def upload(): 
    #user_file is the name value in input element 
    if request.method == 'POST' and 'user_file' in request.files: 
    filename = docs.save(request.files['user_file']) 
    return filename 
    return render_template('upload.html') 

@app.route("/mergedata", methods=['GET']) 
def merge_data(): 
    return send_file("templates/mergeDataPage.html") 

if __name__ == "__main__": 
    app.run(host='0.0.0.0', debug=True) 

ファイルがアップロードされると、私は別のPythonスクリプトを使用して、このエクセルデータを処理したい - このスクリプトは、Excelがかかります特殊文字を削除し、csvファイル/出力に変換します。私はウェブページにCSV出力を表示したいと思います。

ユーザーはファイルをアップロードし、ボタンを押してデータを消去し、結果を出力ボックスに出力することが考えられます。このシナリオのようなものを構築するにはどうすればいいですか?

私はFlaskにはかなり新しいですが、これまでにこのクールなWebフレームワークを学ぶのは非常にエキサイティングでした。あなたの助けに感謝します、ありがとう!

+0

@vishes_shell私はフラスコに新たなんだから、単にファイルをアップロードする方法を考え出し、ルートを設定しますパンドにスクリプトを作りましたパンダを使ってファイルをCSV形式に変換します。私はあなたが答えを探しているというアイデアを得ることができなかったことを願っています。おそらく 'main.py'からデータを処理し、現在のページに結果を表示する方法についての指示が必要です。たぶんいくつかのチュートリアルが参考になるでしょう。また、私はパンダスクリプトをクラスとして作成し、 'main.py'から呼び出してjsonとして配信することを考えていました。私のバックグラウンドはフロントエンドの開発者にあります。 – medev21

+0

ファイルを保存した場合、そのファイルを簡単にレンダリングできるデータに変換するスクリプトがあります。これはおそらく完了しています。アップロードビュー(ファイルを保存した後)ですべてを行い、その後そのデータでテンプレートをレンダリングします。 –

答えて

1

pandasモジュールを使用して、最初にExcelファイルを変換することができます。

import pandas as pd 
data_xls = pd.read_excel('your_workbook.xls', 'Sheet1', index_col=None) 
data_xls.to_csv('your_csv.csv', encoding='utf-8') 

パンダは、CSVファイルを扱うために壮観ですし、次のコードでは、CSVファイルを読み込み、変数に列全体を保存するために必要なすべてのようになります。例えば

import pandas as pd 
df = pd.read_csv(csv_file) 
saved_column = df.column_name #you can also use df['column_name'] 

あなたが望んでいた場合変数に自分の列名での情報のすべてを保存するために、これはあなたがする必要があるすべてである:

names = df.Names 
+0

@Gowda pandasは、ファイルをExcelに変換してcsvに変換するスクリプトに使用しているものです。そのスクリプトをmain.pyからどのように使用して処理し、結果(この場合は変数)を別のページまたは現在のページに表示するかを質問してください。 Flask – medev21

+0

に慣れていない場合は、2つの異なるスクリプトファイルを用意する必要はありません。アップロード、変換、出力はすべて同じスクリプトで行うことができます。 –

関連する問題