LoginSignup
0
0

More than 3 years have passed since last update.

ファイルコピーしてセル値書き換え@python

Last updated at Posted at 2020-10-19

やりたいこと

テンプレートとなる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で読み込むように一部変更。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0