◯ ダウンロードページ https://www.python.org/downloads/ ◯ ダウンロードファイル python-3.12.0-amd64.exe |
◯ コマンドプロンプトを起動してコマンド実行 py -m pip install openpyel py -m pip install selenium ◯ インストール確認 py -m pip list |
|
◯ wb = openpyxl.load_workbook("売上データ.xlsx") ブックの読み込み ◯ wb.sheetnames シート名の一覧を取得 |
|
['4月売上', '5月売上', '6月売上']
|
◯ wb.save("売上データ.xlsx") ブックを保存
|
|
◯ from pathlib import Path fromの後ろにモジュール名、importの後ろにモジュール内の使いたい機能を指定 ◯ Path("Copy").mkdir(exist_ok=True) フォルダーを作成。exist_ok=Trueで既存の場合は作成されない |
|
◯ ws = wb["4月売上"] シート名でシートを指定 ◯ ws2 = wb.worksheets[1] 0から始まる番号(インデックス)でシートを指定 ◯ ws.title シート名を取得 |
|
4月売上
5月売上
|
◯ c = ws["A1"] セルの取得をセル番地で指定 ◯ c2 = ws.cell(1, 1) セルの取得を1から始まる行列番号で指定 ◯ c.coordinate セル番地を取得 ◯ c.row セルの行番号を取得 ◯ c.column セルの列番号を取得 |
|
A1
1
1
A1
1
1
|
◯ c1.value セルの値の読み取り ◯ 実行結果 数値、文字列はセルの表示のまま取得されるが、日付、数式はセルの表示と異なった値が取得される。 ・日付はDatetime型で取得される。セル表示が年月日 だけでもPythonの出力では時刻まで表示される ・数式が入力されているセルからは、数式の計算結果 ではなく数式そのものが取得される。 ただしload_workbook()のかっこ内にdata_only=True を記入すると計算結果の数値が取得できる Pythonで保存しただけのブックの場合、計算が実行 されてないので「None」と表示される。この場合、 Excelを開き上書き保存する(計算を実行した状態で 保存する) |
|
2020-04-01 00:00:00
株式会社 鈴木商店
商品C
1200
20
=D4*E4
|
◯ c1.value = 値 セルに値を書き込む ◯ c1.value = datetime.datetime(2020, 4, 30) Datetime型の日付を書き込む
◯ セルに数式を書き込む c6.value = "=D10*E10" ◯ c1.number_format = "yyyy/mm/dd" 日付の表示形式を設定 ◯ c4.number_format = "#,##0" 数値の表示形式を設定 |
|
◯ for row in ws.iter_rows(min_row=4): for文で1行づつ読み込む。()内は開始行、開始列 ◯ for c in row: 1行の中のセルの値を1つづつ取り出す ◯ value_list.append(c.value) セルをリストに格納 ◯ if row[0].value is None: 1列目がNone(ナン)の場合 |
|
[datetime.datetime(2020, 4, 1, 0, 0), '株式会社 鈴木商店', '商品C', 1200, 20, '=D4*E4']
[datetime.datetime(2020, 4, 8, 0, 0), 'サン企画 有限会社', '商品A', 7200, 5, '=D5*E5']
[datetime.datetime(2020, 4, 14, 0, 0), '株式会社 鈴木商店', '商品A', 7200, 3, '=D6*E6']
[datetime.datetime(2020, 4, 17, 0, 0), '三和商事 株式会社', '商品B', 3800, 10, '=D7*E7']
[datetime.datetime(2020, 4, 23, 0, 0), '三和商事 株式会社', '商品C', 1200, 50, '=D8*E8']
[datetime.datetime(2020, 4, 27, 0, 0), 'サン企画 有限会社', '商品A', 7200, 8, '=D9*E9']
|
|
|
Sheet
Sheet1
|
|
|
◯ ブック間でのシート移動は、 できない ◯ ws = wb.worksheets[-1] 末尾のシートは番号に「-1」を指定する ◯ wb.move_sheet(ws, offset=-3) マイナスは左に、プラスは右に移動する ◯ 末尾のシートを先頭に移動する場合のoffset値の算出 to_top = 1 - len(wb.worksheets) wb.move_sheet(ws, offset=to_top )
|
|
◯ ws_copy = wb.copy_worksheet(ws) シートのコピーを作成する(末尾に追加される) |
|
◯ ブック間でのシートのコピーは、 できないので、ブックをコピーして、不要シートを削除して、別名で保存する
|
|
◯ row[0].row row[0]で処理対象の行情報を取得できる row[0].rowで処理対象の行番号を取得できる ◯ ws_new.append(row) 新しいシートの最終行に行追加される(最初は1行目から) ◯ ws_new.cell(row_num, 1).number_format セルの位置ををR1C1形式で指定して表示形式を設定
|
|
◯ for file in Path("売上全支店").glob("*.xlsx"): 売上全支店フォルダー内の検索パターンに一致するファイルを1つずつループする ◯ wb_list.append(wb) リストにworkbookを格納する ◯ wb_new = openpyxl.Workbook() 新しいブックを生成。ブック生成時に1シートが自動で生成される ◯ wb_list[0].sheetnames リストに格納された1つ目のworkbookのシート名一覧 |
|
◯ 条件に合う複数の顧客を検査する場合 if customer[0].startswith("K"): 文字列の先頭文字が「K」であればTrueを返す |
|
|