第二回【python】【業務効率化】【ファイル統合】複数のExcel(エクセル)ファイルを自動化で1つのファイルにしたい -2-

第二回【python】【業務効率化】【ファイル統合】複数のExcel(エクセル)ファイルを自動化で1つのファイルにしたい -2-

 業務効率化のため特定のフォーマットで出力された複数のエクセルファイルをpythonで自動的に1個にまとめることを目標にします。今回はエクセルからデータを読み込みます。業務効率化が目的なのでpythonを使わない人でも使えるように、ファイル名などの定数は「.py」のプログラムを触らなくても使えることを目指します。【注】この記事のみでは完結しません。

【参考】
複数のExcel(エクセル)ファイルを自動化で1つのファイルにしたい 1

 →統合前のエクセルファイルの名前を取得
複数のExcel(エクセル)ファイルを自動化で1つのファイルにしたい  2
 →エクセルデータの読み込み
複数のExcel(エクセル)ファイルを自動化で1つのファイルにしたい 3
 →X軸データの重複削除
複数のExcel(エクセル)ファイルを自動化で1つのファイルにしたい 4
 →データ加工と保存(一通り終了)

サンプルコード

# -*- coding: utf-8 -*-
import os
import sys
import codecs 
from os import path
import openpyxl
from openpyxl import load_workbook

##自作モジュールのインポート##
m_path = path.join(path.dirname(__file__),"under")
sys.path.append(m_path)
import yomikomi




###↓↓↓↓↓↓第一回で説明↓↓↓↓↓↓↓↓###
###f_name.txtの読み込み###
rf_name="f_name.txt"
read_path = path.join(path.dirname(__file__),rf_name)
read_file=yomikomi.d_yomikomi(read_path)
print(read_file)

###f_name.txtから3行目のみ抜き取る####
d_f_name=read_file[2]
x=d_f_name.find("\r\n")
d_f_name=d_f_name[0:x]
print(d_f_name)
#####################################


###統合するファイルの名前を取得####
full_d_f_path= path.join(path.dirname(__file__),d_f_name)
files = os.listdir(full_d_f_path)
print(files)
####################################
###↑↑↑↑↑↑↑↑第一回で説明↑↑↑↑↑↑↑↑↑###




for i in files:
    print(i)
    f_path= path.join(path.dirname(__file__),d_f_name,i)
    print(f_path)
    
    #ファイル読み込み
    wb=openpyxl.load_workbook(f_path)
    
    #ワークシート一覧読み込み
    ws=wb.sheetnames
    
    #先頭のワークシート読み込み
    ws0_name=ws[0] #ワークシートの名前を取り出し(sheet1)
    ws0=wb[ws0_name] #sheet1のデータをws0に代入
    print(ws0)

    for row in ws0.iter_rows(min_row=1):
        print(row)
        print(row[0].value)
        print(row[1].value)

実行結果&解説

 17~37行目はこちらの記事を参照ください
 42行目でdataフォルダに入っているファイルの数だけforループを繰り返すように設定しています。今回はtest.xlsxのみですので繰り返しは1回で、test.xlsxのみが対象になります。
 48行目でtest.xlsxを読み込みます。
 51行目でtest.xlsxに含まれるワークシートを読み込みます。
 53~56行目で、先頭(ws[0])のワークシートを取り出します。ここでは「Sheet1」となります。
 58行目からSheet1のデータを行ごとに読み取ります。今回はmin_row=1にしたので1行目から読み込まれます
 ■row[0]はA1~A6
 ■row[1]はB1~B6

あとがき

 今回でpythonに必要なデータが取り込めました。あとはpython上でデータ処理をして保存をしていくだけです。次回にそちらを紹介予定です。
 53行目から56行目は分かりにくいと思いますのでコメントを記載しておきました(筆者はいまだに違和感しかないです)。