前提・実現したいこと
htmlの入力フォームに打ち込んだ文字列と合致するセルを持つexcelの行を抽出するようなシステムを作りたいと思っています。
試したこと
このようなindex.htmlを作りまして、ここに入力した文字列をPOSTしてpythonに読み込むようなflask環境を整えました。
そして、pythonでは、openpyxlを用いてこの文字列がexcelデータベースのどこに合致するのかを検索する処理を行います。
その結果、pythonはexcelのどの箇所にデータが格納されているかを(行番号,列番号)の形で提示します。
例えば、以下のようなexcelデータがあるとします。
このとき入力フォームに「東京」と打ち込むと、pythonはexcelの(2,3)(4,3)に「東京」が格納されていることを教えてくれます。
同様に、「バナナ」と打ち込むと、(3,2)(5,2)に「バナナ」が格納されていることを教えてくれます。
該当のソースコード
python
1from flask import Flask, render_template 2from flask import request 3import openpyxl 4wb = openpyxl.load_workbook("test.xlsx") 5 6app = Flask(__name__) 7 8@app.route("/index") #入力フォームのあるhtmlページです 9def index(): 10 renderpage = render_template("index.html") 11 return renderpage 12 13@app.route("/result", methods=['POST']) 14def result(): 15 result = [] 16 query = request.form['query'] #入力フォームに打ち込まれた文字列をqueryに格納します。 17 result = search(query) #上のqueryを検索関数に渡して、その結果をresultに格納します。ここから、どういう処理をすべきか悩んでいます。 18 19 20def search(query): #メインの検索関数(ここでは省略します) 21 return list(result) #「東京」というqueryから[(2,3),(4,3)]を返します。 22 23 24if __name__ == "__main__": 25 app.run(debug=True) 26 27
html
1<html> 2 <head> 3 <title>test</title> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 </head> 6 <body> 7 <form action="/result" method="POST"> 8 <p>検索文字列:<input type="text" name="query" size="30"></p> 9 <p><input type="submit" value="検索"></p> 10 </form> 11 </body> 12</html>
今後やりたいこと
pythonが探しだしたこのデータに基づいて、該当する行だけを抽出して表示できるようなシステムを作りたいです。
例えば、「東京」であれば、次のような出力画面が理想です。
この出力画面はhtmlで出したいと思っています。
可能であれば、ヒットしたセル部分の背景色は画像のように変えて出力したいです。
補足情報
pythonを用いてのプログラム記述やexcel操作などは数ヶ月行ってきたのですが、htmlやflaskを用いたシステム作成に関しては勉強し始めたばかりです。
そのため、こうした理想を実現するためにどのような手段が考えられるかを教えて頂きたいです。
回答1件
あなたの回答
tips
プレビュー