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

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

務効率化のため特定のフォーマットで出力された複数のエクセルファイルをpythonで自動的に1個にまとめることを目標にします。今回は最終的にX軸とする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



column=[] #第3回で追加




###↓↓↓↓↓↓第1回で説明↓↓↓↓↓↓↓↓###
###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)
####################################
###↑↑↑↑↑↑↑↑第1回で説明↑↑↑↑↑↑↑↑↑###




###↓↓↓↓↓↓第2回で説明↓↓↓↓↓↓↓↓###
###f_name.txtの読み込み###
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)
###↑↑↑↑↑↑↑↑第2回で説明↑↑↑↑↑↑↑↑↑###



    for row in ws0.iter_rows(min_row=2):
        column.append(str(row[0].value))#文字列として1列目を保存

print(column)


delete_column=set(column)#重複の削除
print(delete_column)

column2= sorted(delete_column)

print(column2)

実行結果&解説

 21~65行目は-1--2-を参照ください。
 16行目で空の配列(column)を用意し、71行目以降でdataフォルダに入っているファイルの1列目2行目以降のデータを入れていきます(column)。ここで、72行目でstrで文字列に変換していることに注意してください。数字のままのデータがあると77行目でエラーが出ます。
 77行目で重複したデータを削除して(緑枠部分)80行目で順序を調整します(column2)

あとがき

 今回で合体させるエクセルの縦軸ができました。次回以降にその縦軸にデータを入れていきます。次回はおそらく、ちょっとあたまの悪い書き方になると思います・・・。(第二回でfor分クローズしてるので・・・)