日経ソフトウェア2022年5月号の「PythonでExcel自動化」を試してみた その1

データの準備

必要なデータは以下のURLからダウンロードします。(t22205.zip)

info.nikkeibp.co.jp

本の中ではAnacondaを使用していますが、VSCでやってみます。

 

anacondaは

https://www.anaconda.com/ からdownloadボタンで入手できます。

ケース1:分割編 Excelファイルの内容を取引さきごとに抽出し、取引先のフォルダーに分割して保存

手順としては以下の通りです。

0.t22205.zipを任意のフォルダに解凍

1.\t22205\lesson\Case01\inputフォルダに発注管理表があるので、取引先ごとに抽出

2.抽出したデータを取引先ごとにExcelファイルに書き出す

3.Excelファイル名を「発注日+株式会社○○様」にし、outputフォルダに保存

 

 

1.\t22205\lesson\Case01\inputフォルダに発注管理表があるので、取引先ごとに抽出

 

必要なライブラリとモジュールのimport。

ライブラリはプログラムでよく使用する機能をまとめて簡単に使用できるようにしたものです。標準ライブラリはimportする必要のないライブラリを指し、外部ライブラリはpandas、tensorflowなどを指します。

モジュールは○○.pyのファイルで○○がモジュール名です。

 

import pandas as pd
import os
import datetime

 

pandasはExcelファイルの操作に使用するライブラリです。asを使用して短い単語に置き換えています。

osはファイルの変更、パスの生成などに使用します。(モジュール)

datetimeは日付や時刻を扱うモジュールです。

パスを設定します。

import_file_path = 'lesson/Case01/input/sample.xlsx'
sheets_name = '発注管理表'
export_file_path = 'lesson/Case01/output'
 

import_file_path、sheets_name、export_file_pathという変数を用意し、それぞれにエクセルファイル場所、シート名、出力するフォルダ名を指定します。

 

sample.xlsxファイルの読み込みはpd.read_excelを使用します。

head()でファイルの先頭5行を表示します。

dr_order = pd.read_excel(import_file_path,sheet_name=sheets_name)
print(dr_order.head())

 

実行結果

  会社名  商品番号  商品分類     商品名  単価(円)  数量   発注金額
0  株式会社A  b023  ボトムス  ロングパンツ   7000   8  56000
1  株式会社A  b003  ボトムス    ジーンズ   6000  10  60000
2  株式会社A  b003  ボトムス  ロングパンツ   7000  10  70000
3  株式会社A  b036  ボトムス  ロングパンツ   7000   2  14000
4  株式会社A  b013  トップス     ニット   8000   7  56000

 

会社名を取得し、発注日を作成します。

company_name = dr_order['会社名'].unique()
today = datetime.datetime.today()
today_date=today.strftime('%Y%m%d')
print(today)
print(today_date)
 

uniqueメソッドで重複した会社名は除外します。

strftimeメソッドを使用してtimeの体裁を整えます。

 

todayとtoday_dateの違い

2022-04-11 07:46:19.598582
20220411

 

for分で会社数だけファイルを作成し、outputフォルダに格納します。

for iii in company_name:
    export_folder = export_file_path + '/' + iii

    if os.path.isdir(export_folder) == False:
        os.mkdir(export_folder)
    else:
        pass

    df = dr_order[dr_order['会社名']==iii]
    df.to_excel(export_folder + '/' + today_date + iii + '様.xlsx')

#作成されたフォルダの表示
print(os.listdir(export_file_path))
#+様.xlsxの最後のファイルを表示
print(os.listdir(export_folder))

 

実行結果['株式会社A', '株式会社B', '株式会社C', '株式会社D', '株式会社E', '株式会社F', '株式会社G', '株式会社H', '株式会社I', '株式会社J', '
株式会社K', '株式会社L', '株式会社M', '株式会社N', '株式会社O', '株式会社P', '株式会社Q', '株式会社R', '株式会社S', '株式会社T', '株 
式会社U', '株式会社V', '株式会社W', '株式会社X', '株式会社Y', '株式会社Z']
['20220411株式会社Z様.xlsx']

 

 

 

 

 

 

 

 

 

 

/* -----codeの行番号----- */