転職活動中に応募書類をpdfで求められることが多くExcelやWordのファイルをいちいち最新の日付にしてpdfに変換という作業が面倒だったので自動化してみました
↓とりあえず必要なライブラリと日付情報たちを変数に入れていきます
import openpyxl
import os
import datetime
import win32com.client
import docx
#日付を取得
today = datetime.date.today()
year_jp = str(int(today.strftime('%Y')) - 2018)#令和用
year_ad = today.strftime('%Y')
month = str(int(today.strftime('%m')))
day = str(int(today.strftime('%d')))
↓ここからファイル操作です
履歴書がexcelで職務経歴書がWordなので微妙に処理が違います
#excel操作
rasume = "履歴書.xlsx"
wb = openpyxl.load_workbook(rasume)
sheet = wb['sheet1']
sheet['V9'].value = f' 令和 {year_jp}年 {month}月 {day}日現在'
#excel保存
wb.save(rasume)
wb.close
#word操作
word = docx.Document("職務経歴書before.docx")#編集前原本
para1 = word.paragraphs[0]
t = para1.text
t = t.replace("date",f'{year_ad}年 {month}月 {day}日')#原本の日付部分を"date"にしている
para1.text = t
word.save("職務経歴書.docx")
続いてpdf化操作です
何故かexcelは絶対パスじゃないとファイルを読み込んでくれませんでした
#excel→pdf変換 win32com相対パス使用不可
os.remove("履歴書.pdf")#pdfファイルがあると何故かexcelが保存できないため泣く泣く一旦削除してからpdf化
excel = win32com.client.Dispatch("Excel.Application")#pdf変換用ライブラリ
excelFile = excel.Workbooks.Open("C:/Users/name/Documents/src/python/RasumeDateChange/履歴書.xlsx")
excelFile.Worksheets("sheet1").Activate()
excelFile.ActiveSheet.ExportAsFixedFormat(0,"C:/Users/name/Documents/src/python/RasumeDateChange/履歴書.pdf")
excelFile.Close()
excel.Quit()
#word→excel変換
wdFormatPDF = 17
readFile = os.path.abspath("職務経歴書.docx")
saveFile = os.path.abspath("職務経歴書.pdf")
word = win32com.client.Dispatch("Word.Application")#pdf変換用ライブラリ
wordFile = word.Documents.Open(readFile)
wordFile.SaveAs(saveFile,FileFormat=wdFormatPDF)
wordFile.Close()
word.Quit()
このプログラムをタスクスケジューラで定期起動させ常に最新の日付のpdfファイルが保存されるようにしました