ExcelとWordを連携し、Excelの顧客名簿を元にして、各顧客にイベントの案内状を作成しようとしておりますが、Excel名簿の最後の人の名前しか作成できませんでした。
本来ならば、「events」というフォルダが作成され、顧客の数だけWordファイルが書き出される様です。
何卒、ご教示の程宜しくお願い致します。
###下記がプログラムです。
import openpyxl as excel, docx, os # 設定 in_file = 'meibo.xlsx' template_file = 'template-event.docx' save_dir = os.path.join(os.path.dirname(__file__),'events') #作成するWordフォイルをオゾンするフォルダを作る if not os.path.exists(save_dir): os.mkdir(save_dir) #Excelファイルを読んでリストを得る def read_book(): result = [] sheet = excel.load_workbook(in_file).active for row in sheet.iter_rows(min_row=2): v =[c.value for c in row] if v[0] is None: break result.append(v) return result #顧客の数だけ案内状を生成 for person in read_book(): name, zipno, addr = person card = { '住所: ▲▲▲': addr, '●●様へ': name+'様へ' } doc = docx.Document(template_file) for p in doc.paragraphs: for k,v in card.items(): if p.text.find(k) >= 0: p.text = p.text.replace(k, v) p.runs[0].font.bold = True #Wordファイルへ保存 save_file = os.path.join(save_dir, name+'様.docx') print('save:', save_file) doc.save(save_file)
###下記がプログラミングを実行したときに「IDLE Shell」に出てくるものです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/14 14:33