【FLASK + PYTHON】CSVファイルを表示

PYTHON

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>
PYTHON
スポンサーリンク
シェアする
フォローする
タイトルとURLをコピーしました