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

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

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

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

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

PyCharm

エディター・開発ツール

Q&A

1回答

765閲覧

[Python3.x]表中で不足分をまとめて別のExcelファイルで表示したい

MM921

総合スコア14

openpyxl

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

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

PyCharm

エディター・開発ツール

0グッド

0クリップ

投稿2021/11/18 07:38

編集2021/11/24 01:20

※コードの一部掲載ミスにより修正を加えています。
修正によりプログラムの中枢内容が変わってしまっているためベストアンサーの方は外させていただきます。回答していただいた方にご迷惑をかけたことをお詫び申し上げます。

前提・実現したいこと

Python3.8で簡単な在庫管理を行うシステムを作っています。

その中で商品入出庫の際,不足しているものがすぐ参照できるように,商品名と実際にある個数xと下限値yを表した一覧表である「商品一覧.xlsx」からx<yとなっている商品の名称を抜粋した「不足商品一覧.xlsx」を作成したいと考えています。

未熟な点が多々あるかと思いますが有識者の方々,お付き合い願います。
↓①商品一覧.xlsx(太字は該当項目)

商品名個数x下限値y
ぶどう914900
なし921950
りんご616600
すいか120150
メロン902900
かき119110
さくらんぼ114120
みかん100500
レモン1020
### 該当のソースコードと発生している問題
以下は該当のソースコードです。
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

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

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

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

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

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

guest

回答1

0

何が問題かは良くわかりませんが、

python

1for x in range(9): 2 if lstA[x] < lstB[x]: 3 bb = ws['B']# B列(個数) 4 aa = ws['A']# A列(商品名) 5 print(aa[x].value)# lstA[x] < lstB[x]に該当する商品名をprint表示 6# wb2.save(r'C:\Users\xxxx\PycharmProjects\sample2Project\不足商品一覧.xlsx') 7 wb2.save(r'C:\Users\xxxx\PycharmProjects\sample2Project\不足商品一覧.xlsx')

とすれば良いような気がします。

投稿2021/11/18 11:37

ppaul

総合スコア24666

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

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

MM921

2021/11/19 00:16

ppaulさん,ご回答ありがとうございました。 ご提案いただいたとおりwb2.save(r'C:\Users\xxxx\PycharmProjects\sample2Project\不足商品一覧.xlsx')を消すことで正常に動作いたしました,ありがとうございます。 wb2.save(r'C:\Users\x....)が複数あることで今回のようになってしまうんですね。 saveの位置や個数について勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問