# coding: shift_jis
import glob
import openpyxl as excel
class read_files():
# 対象フォルダと保存先のファイル名を指定
dirName = "./ExcelWorkDir/"
target_dir = dirName + 'salesbooks'
save_file = dirName + 'matome.xlsx'
# メイン処理 --- (*1)
def exe(self):
# 売上一覧を書き込むブックを用意する
book = excel.Workbook()
main_sheet = book.active
# ファイルをを列挙して読む
self.enumfiles(main_sheet)
# 読み込んだデータを保存
book.save(self.save_file)
# ファイルを列挙する --- (*2)
def enumfiles(self,main_sheet):
# Excelファイルの一覧を得る --- (*3)
files = glob.glob(self.target_dir + '/*.xlsx')
# 各Excelブックを次々と読んでいく --- (*4)
for fname in files:
self.read_book(main_sheet, fname)
# ブックを開いて中身を読む --- (*5)
def read_book(self,main_sheet, fname):
print("read:", fname)
# Excelブックを読み込む --- (*6)
book = excel.load_workbook(fname, data_only=True)
sheet = book.active
# 売上データのある範囲を読み取る --- (*7)
rows = sheet["A4":"F999"]
for row in rows:
# セルの値をリストとして得る --- (*8)
values = [cell.value for cell in row]
if values[0] is None: break
print(values)
# メインシートに値をコピー --- (*9)
main_sheet.append(values)
# メインプログラムを実行 --- (*10)
if __name__ == "__main__":
exe()
# ファイル保存場所:C:\Users\PC-USER\source\repos\PythonApplication1\PythonApplication1
# ファイルを保存 --- (*5)
dirName = dirName + 'hello.xlsx'
#book.save(dirName)
IyBjb2Rpbmc6IHNoaWZ0X2ppcwoKaW1wb3J0IGdsb2IKaW1wb3J0IG9wZW5weXhsIGFzIGV4Y2VsCgpjbGFzcyByZWFkX2ZpbGVzKCk6CiAgIyDlr77osaHjg5Xjgqnjg6vjg4Djgajkv53lrZjlhYjjga7jg5XjgqHjgqTjg6vlkI3jgpLmjIflrpoKICBkaXJOYW1lID0gIi4vRXhjZWxXb3JrRGlyLyIKICB0YXJnZXRfZGlyID0gZGlyTmFtZSArICdzYWxlc2Jvb2tzJwogIHNhdmVfZmlsZSA9IGRpck5hbWUgKyAnbWF0b21lLnhsc3gnCiAgIyDjg6HjgqTjg7Plh6bnkIYgLS0tICgqMSkKICBkZWYgZXhlKHNlbGYpOgogICAgIyDlo7LkuIrkuIDopqfjgpLmm7jjgY3ovrzjgoDjg5bjg4Pjgq/jgpLnlKjmhI/jgZnjgosKICAgIGJvb2sgPSBleGNlbC5Xb3JrYm9vaygpCiAgICBtYWluX3NoZWV0ID0gYm9vay5hY3RpdmUKICAgICMg44OV44Kh44Kk44Or44KS44KS5YiX5oyZ44GX44Gm6Kqt44KACiAgICBzZWxmLmVudW1maWxlcyhtYWluX3NoZWV0KQogICAgIyDoqq3jgb/ovrzjgpPjgaDjg4fjg7zjgr/jgpLkv53lrZgKICAgIGJvb2suc2F2ZShzZWxmLnNhdmVfZmlsZSkKCiAgIyDjg5XjgqHjgqTjg6vjgpLliJfmjJnjgZnjgosgLS0tICgqMikKICBkZWYgZW51bWZpbGVzKHNlbGYsbWFpbl9zaGVldCk6CiAgICAjIEV4Y2Vs44OV44Kh44Kk44Or44Gu5LiA6Kan44KS5b6X44KLIC0tLSAoKjMpCiAgICBmaWxlcyA9IGdsb2IuZ2xvYihzZWxmLnRhcmdldF9kaXIgKyAnLyoueGxzeCcpCiAgICAjIOWQhEV4Y2Vs44OW44OD44Kv44KS5qyh44CF44Go6Kqt44KT44Gn44GE44GPIC0tLSAoKjQpCiAgICBmb3IgZm5hbWUgaW4gZmlsZXM6CiAgICAgIHNlbGYucmVhZF9ib29rKG1haW5fc2hlZXQsIGZuYW1lKQoKICAjIOODluODg+OCr+OCkumWi+OBhOOBpuS4rei6q+OCkuiqreOCgCAtLS0gKCo1KQogIGRlZiByZWFkX2Jvb2soc2VsZixtYWluX3NoZWV0LCBmbmFtZSk6CiAgICBwcmludCgicmVhZDoiLCBmbmFtZSkKICAgICMgRXhjZWzjg5bjg4Pjgq/jgpLoqq3jgb/ovrzjgoAgLS0tICgqNikKICAgIGJvb2sgPSBleGNlbC5sb2FkX3dvcmtib29rKGZuYW1lLCBkYXRhX29ubHk9VHJ1ZSkKICAgIHNoZWV0ID0gYm9vay5hY3RpdmUKICAgICMg5aOy5LiK44OH44O844K/44Gu44GC44KL56+E5Zuy44KS6Kqt44G/5Y+W44KLIC0tLSAoKjcpCiAgICByb3dzID0gc2hlZXRbIkE0IjoiRjk5OSJdCiAgICBmb3Igcm93IGluIHJvd3M6CiAgICAgICMg44K744Or44Gu5YCk44KS44Oq44K544OI44Go44GX44Gm5b6X44KLIC0tLSAoKjgpCiAgICAgIHZhbHVlcyA9IFtjZWxsLnZhbHVlIGZvciBjZWxsIGluIHJvd10KICAgICAgaWYgdmFsdWVzWzBdIGlzIE5vbmU6IGJyZWFrCiAgICAgIHByaW50KHZhbHVlcykKICAgICAgIyDjg6HjgqTjg7Pjgrfjg7zjg4jjgavlgKTjgpLjgrPjg5Tjg7wgLS0tICgqOSkKICAgICAgbWFpbl9zaGVldC5hcHBlbmQodmFsdWVzKQoKICAjIOODoeOCpOODs+ODl+ODreOCsOODqeODoOOCkuWun+ihjCAtLS0gKCoxMCkKICBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgZXhlKCkKCiAgIyDjg5XjgqHjgqTjg6vkv53lrZjloLTmiYDvvJpDOlxVc2Vyc1xQQy1VU0VSXHNvdXJjZVxyZXBvc1xQeXRob25BcHBsaWNhdGlvbjFcUHl0aG9uQXBwbGljYXRpb24xCiAgIyDjg5XjgqHjgqTjg6vjgpLkv53lrZggLS0tICgqNSkKICBkaXJOYW1lID0gZGlyTmFtZSArICdoZWxsby54bHN4JwogICNib29rLnNhdmUoZGlyTmFtZSkKCg==