第三回【python】【業務効率化】【ファイル統合】複数のExcel(エクセル)ファイルを自動化で1つのファイルにしたい -3-
- 2020.10.22
- python
務効率化のため特定のフォーマットで出力された複数のエクセルファイルを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分クローズしてるので・・・)
-
前の記事
第二回【python】【業務効率化】【ファイル統合】複数のExcel(エクセル)ファイルを自動化で1つのファイルにしたい -2- 2020.10.21
-
次の記事
第四回【python】【業務効率化】【ファイル統合】複数のExcel(エクセル)ファイルを自動化で1つのファイルにしたい -4- 2020.10.24