質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

662閲覧

pythonで取り込んだExcelシートをフィルタリングしたい

tonk

総合スコア22

openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/02/29 23:29

いつもお世話になります。
よろしくお願いいたします。

やりたいこと

openpyxlでExcelのシートからデータを取り出してブラウザで閲覧したいと考えてます。
その際にブラウザ上でフィルターをかけたいのですが、フィルターデータの作り方で分からない点があり質問させていただきました。

同時にいくつかの条件をかけて結果を表示させたいので、以下のように書きました。フィルタ条件が一件だと問題なく該当するデータが出力されるのですが、elifの処理を加えると、該当が0件となってしまいます。

python

1#header_cellsはシート一行目の項目名、rは二行目以降の各行 2#status、typeはフィルターする項目名 3#最終的にfilterをhtmlに渡して表示 4 5dict = {} 6for k,v in zip(header_cells,r): 7 dict[k.value] = v.value 8#フィルタリングが一カ所ならOK 9 if dict[k.value] != status: 10 continue 11#elifで二カ所にするとNG 12 elif dict[k.value] != type: 13 continue 14 else: 15 filter.append(dict)

ご教示いただけますと幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

python

1dict = {} 2r1 = 0 3r2 = 0 4for k,v in zip(header_cells,r): 5 dict[k.value] = v.value 6 if dict[k.value] == type: 7 r1 = 1 8 elif dict[k.value] == status: 9 r2 = 1 10if r1 + r2 == 2 : 11 filter.append(dict) 12else: 13 continue

投稿2020/03/01 08:24

tonk

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

本来やりたいことが把握できていませんが、提示コードだとdict[k.value]statusかつtypeである場合のみ条件に合致するという判定になっています。ここでstatustype変数の値が異なると、当然条件に合致しなくなります。
単純化すると以下のようなコードと同じ動きになっています。

Python

1for v in [1,2,3]: 2 print('v=', v) 3 if v != 1: 4 continue 5 elif v != 2: 6 continue 7 else: 8 print('ok')

投稿2020/03/01 00:02

can110

総合スコア38278

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tonk

2020/03/01 08:23

ご回答ありがとうございました。 いただいたアドバイスを踏まえて解決に至りました。 勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問