#やりたいこと
テンプレートとなるExcelをコピーして、
ファイル名を変更。
ついでに表紙扱いのシートの一部の値だけ書き換えたい。
#背景
仕事上、とあるテンプレートを元に
似たようなファイルをいくつか用意しないといけないのだが、
一部のセル値だけ値の変更が必要。
ファイル複製だけならbatとかでよいが、
値の変更をわざわざExcel開いて書き換えるのも面倒なので。
VBAでも可だがあんまり使いたくない。できればPythonの練習も兼ねたい。
ファイル名とか変更値とかはcsvに定義しておけば
変更楽だし使いまわしできるしいいよね。
#流したスクリプト
cpFileCopyNameByCSVlist.py
import os
import sys
import pandas as pd
import shutil
import openpyxl
csvname = './cpfilelist.csv'
resultFolder = './cpResult/'
templatefilename = './template.xlsx'
shutil.rmtree(resultFolder)
os.mkdir(resultFolder)
#read list from csv
#data = pd.read_csv(csvname).values.tolist()
data = pd.read_csv(csvname, encoding='Shift-JIS').values.tolist()
wsname = 'header'
for row in data:
#copy template file renamed by list.csv
print(row[0] +":"+row[1])
newFileName = resultFolder + row[0] +'.xlsx'
newTitleName = row[1]
shutil.copyfile(templatefilename,newFileName)
# change cell.value from csv valye
wb = openpyxl.load_workbook(newFileName)
ws=wb[wsname]
ws['B5'] = newTitleName
wb.save(newFileName)
wb.close()
sys.exit(0)
#メモ
pandasって便利だなー。
#追記
csv読み込み時にencodingエラーが出る時があるので、明示的にSHIFT-JISで読み込むように一部変更。