※コードの一部掲載ミスにより修正を加えています。
修正によりプログラムの中枢内容が変わってしまっているためベストアンサーの方は外させていただきます。回答していただいた方にご迷惑をかけたことをお詫び申し上げます。
前提・実現したいこと
Python3.8で簡単な在庫管理を行うシステムを作っています。
その中で商品入出庫の際,不足しているものがすぐ参照できるように,商品名と実際にある個数xと下限値yを表した一覧表である「商品一覧.xlsx」からx<yとなっている商品の名称を抜粋した「不足商品一覧.xlsx」を作成したいと考えています。
未熟な点が多々あるかと思いますが有識者の方々,お付き合い願います。
↓①商品一覧.xlsx(太字は該当項目)
商品名 | 個数x | 下限値y |
---|---|---|
ぶどう | 914 | 900 |
なし | 921 | 950 |
りんご | 616 | 600 |
すいか | 120 | 150 |
メロン | 902 | 900 |
かき | 119 | 110 |
さくらんぼ | 114 | 120 |
みかん | 100 | 500 |
レモン | 10 | 20 |
### 該当のソースコードと発生している問題 | ||
以下は該当のソースコードです。 | ||
openpyxlで①商品一覧.xlsxを読み込んで数値の比較後,②不足商品一覧.xlsxに該当の商品名が記入されます。 |
cord
1import openpyxl as px 2# ①商品一覧.xlsx 3wb = px.load_workbook(r'C:\Users\xxxx\PycharmProjects\sample2Project\kudamono.xlsx') 4ws = wb["Sheet1"] 5# ②不足商品一覧.xlsx 6wb2 = px.load_workbook(r'C:\Users\xxxx\PycharmProjects\sample2Project\不足備品表.xlsx') 7ws2 = wb2["Sheet1"] 8# 個数xリスト 9lstA = [] 10for cell in ws['B']: 11 lstA.append(cell.value) 12# 下限値yリスト 13lstB = [] 14for cell in ws['C']: 15 lstB.append(cell.value) 16 17for x in range(9): 18 if lstA[x] < lstB[x]: 19 bb = ws['B']# B列(個数) 20 aa = ws['A']# A列(商品名) 21 print(aa[x].value)# lstA[x] < lstB[x]に該当する商品名をprint表示 22 ws2.append({'A': aa[x].value}) 23 wb2.save(r'C:\Users\xxxx\PycharmProjects\sample2Project\不足商品一覧.xlsx') 24# ロードしたExcelファイルを閉じる 25wb.close()
↓print表示
result
1C:\Users\xxxx\AppData\Local\Programs\Python\Python38\python.exe C:/Users/xxxx/PycharmProjects/sample2Project/数値比較.py 2なし 3すいか 4さくらんぼ 5みかん 6レモン 7 8Process finished with exit code 0
②不足商品一覧.xlsxに上記のprint表示な内容を記入する際1回目の実行で表示されますが,2回目以降では追記状態になってしまいわかりづらくなっています。
2回目以降は追記ではなく,1回目実行結果を削除後2回目の結果を書き込むといった実行をしたいです。
↓②不足商品一覧.xlsx(理想)
なし | ||
すいか | ||
さくらんぼ | ||
みかん | ||
レモン | ||
### 試したこと | ||
以下のセル削除のコードを最初に実行した後上記コードにより書き込みを行おうとしたが削除セルの下に追記してしまいました。 |
cord
1for row in ws2: 2 for cell in row: 3 cell.value = None
補足情報(FW/ツールのバージョンなど)
Python3.8
PyCharm
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/19 00:16