画像の1のExcelのシートを読み込み、画像2のようなカテゴリ毎にシートを分けて、1列目に要素を記述するExcelをpythonで作成したいです。
処理を具体的にどのようにすればいいのか思いつかず苦労しています。よければアドバイスでもよいので教えていただけますでしょうか。
今、考えていた処理は以下になります。(全然未完成なので過程だけでもという気持ちで載せています)
1レコードずつfor文で読み込み、前のレコードとカテゴリが同じなら同じシートに追記で、違うなら別シート作成して...とできないかなと思っていました。
def createExcel(categories, titles): # categories:1列目のカテゴリのリスト,titles:2列目の要素のリスト excel = openpyxl.Workbook() isFirst = True prevRow = 0 colValues = [] for categorie in categories: if categorie == categories[prevRow]: sheet = excel[categorie] colValues.append() else: colValues = [] if isFirst: isFirst = False else: prevRow +=1
よろしくお願いいたします。
> 前のレコードとカテゴリが同じなら同じシートに追記で、違うなら別シート作成して
カテゴリはソート済なことが保証されているのですか?
コメントありがとうございます。
現時点では、まずはカテゴリをソート済としてやり方を考えています。
ただ、最終的にはソートされていないデータでもできるようにしたいと思っています。
ソートされていなくても出来るようにするのが目標ならば、下記の方法は良くないですね。
> 前のレコードとカテゴリが同じなら同じシートに追記で、違うなら別シート作成して
「前のレコードとカテゴリが同じ」かどうかは考えなくても、カテゴリと同じシート名のシートに要素名をどんどん追記していけば良いのではないでしょうか?(※同じシート名がなければ作成する)
「今、考えていた処理」はそれほど悪くは無いですので、少しその延長で考えてみてください。
シートとの入出力はまとめたほうがよく、最初のシートの内容をいっきに読み込んで、コード側でカテゴリと要素を並べ直して、カテゴリごとにシート出力を繰り返す、といった方法に変えたほうがよいですね。
少しそれで「今、考えていた処理」を修正してみることをオススメします。
あなたの回答
tips
プレビュー