FLASKの環境で、CSVファイルを選び、CSVファイルの内容を表示するプログラムです。
メインファイル
main.pyとして保存します。
from flask import Flask, render_template, request
import csv
app = Flask(__name__)
@app.route('/')
def home():
return render_template('home.html')
@app.route('/upload', methods=['POST'])
def upload():
file = request.files['file']
if not file:
return 'ファイルアップロードされていません.', 400
if file.filename.endswith('.csv'):
rows = []
csv_file = file.stream.read().decode("SHIFT-JIS")
csv_reader = csv.reader(csv_file.splitlines(), delimiter=',')
for row in csv_reader:
rows.append(row)
return render_template('table.html', rows=rows)
else:
return 'CSVファイルではありません.', 400
if __name__ == '__main__':
app.run(debug=True)
初期画面 home.html
CSVファイルをアップロードする画面になります。templatesのフォルダに保存します。
<!DOCTYPE html>
<html>
<head>
<title>ファイルアップロード</title>
</head>
<body>
<h1>ファイルアップロード</h1>
<form
method="POST"
action="{{ url_for('upload') }}"
enctype="multipart/form-data"
>
<input type="file" name="file" accept=".csv" />
<button type="submit">Upload</button>
</form>
</body>
</html>
データを表示する画面 table.html
CSVファイルの内容を表示する画面になります。home.htmlと同じくtemplatesのフォルダに保存します。
<!DOCTYPE html>
<html>
<head>
<title>FILE CSV</title>
</head>
<body>
<h1>CSVデータ</h1>
<table>
{% for row in rows %}
<tr>
{% for item in row %}
<td>{{ item }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
</body>
</html>