MENU
  • 手帳
    • 手帳 リフィル自作した手帳のリフィルを公開していきます!
    • 手帳 レビュー
    • 手帳 アイデア
    • 手帳 ジャーナリング
  • 独学
    • 独学 キャリアコンサルタント国家資格キャリアコンサルタントの試験対策や学んだコトなどをまとめていきます!
    • 独学 プログラミング
    • 独学 リスキリング自分で楽しく効率よく学習するリスキリングのTipsや参考情報をまとめますᕦ(ò_óˇ)ᕤ
  • ワーク
    • キャリア 転職
    • マインドセット
    • マインドフルネス自分の気持ちを高めて、常に前向きに平常心でいるためのTipsや参考情報をまとめます!
    • ツール活用 効率化
人気の記事ランキングTOP 5!
  • 【自作手帳】自作リフィルのおすすめテンプレート10選!(PDF無料ダウンロード可!)
  • 【2026最新】ジャーナリングのおすすめ本10選!Unlimited対応も!
  • 【自作手帳】Word,Excelで出来る!A5システム手帳のリフィル自作方法
  • 【無料】Goodnotes6で使えるデジタルプランナー・テンプレート10選(PDFダウンロード可)
  • 【保存版】Goodnotes6の使い方まとめ!PDFの読み込み・PDF化・メモの書き方を徹底解説
手帳でキャリアも人生も自分らしく!
キャリアの実験室
  • 手帳
    • 手帳 リフィル自作した手帳のリフィルを公開していきます!
    • 手帳 レビュー
    • 手帳 アイデア
    • 手帳 ジャーナリング
  • 独学
    • 独学 キャリアコンサルタント国家資格キャリアコンサルタントの試験対策や学んだコトなどをまとめていきます!
    • 独学 プログラミング
    • 独学 リスキリング自分で楽しく効率よく学習するリスキリングのTipsや参考情報をまとめますᕦ(ò_óˇ)ᕤ
  • ワーク
    • キャリア 転職
    • マインドセット
    • マインドフルネス自分の気持ちを高めて、常に前向きに平常心でいるためのTipsや参考情報をまとめます!
    • ツール活用 効率化
キャリアの実験室
  • 手帳
    • 手帳 リフィル自作した手帳のリフィルを公開していきます!
    • 手帳 レビュー
    • 手帳 アイデア
    • 手帳 ジャーナリング
  • 独学
    • 独学 キャリアコンサルタント国家資格キャリアコンサルタントの試験対策や学んだコトなどをまとめていきます!
    • 独学 プログラミング
    • 独学 リスキリング自分で楽しく効率よく学習するリスキリングのTipsや参考情報をまとめますᕦ(ò_óˇ)ᕤ
  • ワーク
    • キャリア 転職
    • マインドセット
    • マインドフルネス自分の気持ちを高めて、常に前向きに平常心でいるためのTipsや参考情報をまとめます!
    • ツール活用 効率化
  1. ホーム
  2. 独学
  3. 独学 プログラミング
  4. 【Python自動化】読み込んだデータをword/PDFにして保存する方法

【Python自動化】読み込んだデータをword/PDFにして保存する方法

2024 11/21
独学 プログラミング
ワタシ

今回は社内でのエクセル業務の自動化について理解を深めます。

Pythonを使うと、Excel仕事を効率化・自動化することが可能です。

では具体的にどうやるのか?Pythonかじりはじめたばかりでもできるのか?実務で使えるのか?

この点を明らかにするべく、営業上がり・非エンジニアの私でも出来るレベルの効率化ワザをまとめます(‘◇’)ゞ

合わせて確認したい記事

Pythonを時短で基礎から応用まで一気に学びたい時はこちらもオススメ!
>>【Python】TechAcademyを実際に使ってみて学べたこと

目次

今回の論点整理

今回のアウトプット

今回は編集したデータを共有しやすい形に加工することを目的にします。

イメージは以下の通り。

ワードやPDFなど、共有する際はエクセルの形でない方が好ましいケースが多いです。

Pythonを介すればここの変換や共有についてもコードが用意されているのでここも一度用意してしまえば再利用が容易です。

尚、今回も参考にしているのは以下の書籍で、実践に活用しようと思います。ポイントを絞ってかなり詳しく記載しておりオススメです。

めんどうな作業が秒速で終わる! Excel×Python自動化の超基本
created by Rinker
¥2,134 (2026/02/05 22:19:37時点 Amazon調べ-詳細)
  • Kindle
  • Amazon
  • 楽天市場
  • Yahooショッピング
ツマ

参考書があると目的に対して勉強の流れが明確になるね。

今回の位置づけ

現業におけるデータ分析・エクセル業務を考えると、ザックリ以下の6ステップを踏んでいます。

そのため、今回もこの6ステップの流れを踏まえて、どこを効率化・自動化するかを絞って進めます。

そもそも現業の何の自動化をめざすのか?という点については下記に記載しています。

あわせて読みたい
【Python自動化】openpyxlを使って 社内のExcel作業を自動化する ワタシ 今回は社内でのエクセル業務の自動化について理解を深めます。 Pythonを使うと、Excel仕事を効率化・自動化することが可能です。 では具体的にどうやるのか?Pyt...

その上で、今回はデータは何らかの形で抽出されている前提で、そのデータをいじる工程であるSTEP4を対象にします。

上記を実現する手順について下記に備忘録的にまとめたいと思います。

今回のポイントは以下の3点になります。

抑えドコ!
  • PDFに置き換える
  • Wordに入れ込む
  • 好きなフォルダに格納

順に触れていきます。

Excel業務の自動化に向けたポイント

① PDFに置き換える

まずは今回複数のライブラリをインストールします。

import openpyxl 
import sys
import datetime

from reportlab.platypus import SimpleDocTemplate,Table, TableStyle, Paragraph
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase import pdfmetrics
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors

ここでPDFに出力する関数を使います。長くなるので3つに分解します。

PDF化コード①

#PDF出力関数その①
def excelToPdf(excelFile,pdfFile):
    try:
        workBook = openpyxl.load_workbook(excelFile) 
    except FileNotFoundError:
        print("ファイル読み込みエラー")
        sys.exit()
    sheet = workBook.active 
    document = SimpleDocTemplate(pdfFile, pagesize=A4)
    pdfmetrics.registerFont(TTFont("GenShinGothic-Normal","GenShinGothic-Normal.ttf"))

最後の1行はフォントの設定になります。.ttfの部分を変えればフォントは変更されます。

ちなみに、このフォントは下記のサイトでダウンロードできます。

■参考リンク(外部リンクに飛びます)

PDF化コード②

    elements = []
    tableData = []
    for row in sheet.rows:#行ループ
        recordList = []
        for cell in row: #列ループ
            if sheet.cell(row = 1, column = cell.column). value == '売上金額' and cell.row != 1:
                cell.value = "¥{:,d}".format(cell.value)
            if sheet.cell(row = 1, column = cell.column). value == '日付' and cell.row != 1: 
                cell.value = str(cell.value.year)+"-"+str(cell.value.month)+"-"+str(cell.value.day)
            recordList.append(cell.value)
        tableData.append(recordList)
    table=Table(tableData)

これは前回もやった通り、日付や金額のセルの設定になります。

売上金額だったら金額に適したセルフォーマット、日付であったら日付に適したセルフォーマットにします。

ここは、この書式が入る際のおまじないくらいに思ってやればいいのかなと思います。

PDF化コード③

  table.setStyle(TableStyle([ 
        ('BACKGROUND',(0,0),(-1,0),colors.lightgreen), #1行目セル背景色変更
      ("ALIGN", (0,0),(-1,0), "CENTER"), #1行目中央寄せ
        ("ALIGN", (0,1), (0,-1), "RIGHT"), #1列目右寄せ
        ("ALIGN", (2,1), (2,-1), "RIGHT"), #3列目右寄せに
        ('TEXTCOLOR',(0,0),(1,-1),colors.black), #1,2列目文字色変更
        ('FONT', (0, 0), (-1, -1), "GenShinGothic-Normal", 20), #全体のフォントとフォントサイズ設定
        ('GRID', (0, 0), (-1, -1), 0.5, colors.black),])) #全体のケイ線の設定
    elements.append(table) 
    try:
        document.build(elements) #PDFの書き出し
    except FileNotFoundError:
        print("出力エラー")
        sys.exit()

最後がレイアウトです。

上から順に『背景変更、文字寄せ、文字色変更、フォント変更、罫線設定』の5つを設定しています。

ここは必要に応じて設定する必要があります。

基本的に(○,○),(●,●)の形をとっていますが、(開始するセル)、(終了するセル)の指定して選択といった意味合いです。

また、-1というのは”最後”という意味になるので(0,0), (-1,0)というのは一番左上のセルから、一番左下までのセルを選択するという意味合いになります。

これでPDF化の関数が定義出来ました。

あとは下記のようにその関数を使って出力するだけです。

#ファイル出力
excelToPdf("読み込むエクセルファイル.xlsx","出力するPDFファイル.pdf")
ワタシ

機能ごとに関数の定義をマルッとまとめておけば再利用が楽です

② Wordに差し込む

エクセルファイルの一部をワードファイルにいれこんで出力します。

仕事をしていると、資料作成時に『一部を除きほとんど同じ型で複数出力する』という機会も多くあります。

例えば、領収書の宛名を指定人数分を同じ型で作ったり、年賀状を同じ型で指定の宛先で宛名だけ変えて出力するみたいなものです。

今回はそういった差し込み出力を想定します。コードは以下の通り。

#Excel のデータを Word に書き出す
import os
import sys
import pandas as pd #pandasをインポート 
from docx import Document

#ディレクトリ参照しファイルを開く
path = os.getcwd()
try:
    df = pd.read_excel("領収書(原本).xlsx")
except FileNotFoundError:
    print("ファイル読み込みエラー")
    sys.exit()
columns = list(df.columns) 

※上記のDocumentなどは普段あまり使わないライブラリだと思うので最初にやる時は pipでインストールすることをお忘れなく。

その後にエクセル内のデータを参照して条件を入れ込みます。for文で繰り返し処理を行い、出力の実行を複数回をおこないます。

#繰り返し差し込み出力
for index,item in df.iterrows(): 
    try:
        document = Document("原本.docx")
    except FileNotFoundError: 
        print("ファイルが見つかりません")
        sys.exit()
    for par in document.paragraphs: 
        for column in columns: 
            if str(column) in par.text: #段落に置換対象が含まれているかどうか判定
                if str(column) == "$日付": #日付の場合の形式の設定
                    item[column] = str(item[column]. year)+"年"+str(item[column].month)+"月"+str(item[column].day)+"日"
                if str(column) == "$金額": #金額の場合の形式の設定
                    item[column] = "¥{:,d}".format(item[column]) 
                par.text = par.text.replace(str(column),str (item[column]))
    outFile = os.path.join(path,"OutFolder",item["$お名前"]+"様領収書.docx")
    try:
        document.save(outFile) #Wordのファイルに書き出し 
    except FileNotFoundError:
        print("保存先のフォルダがありません")
        sys.exit()

上記を通じて、原本というwordファイルを読み込み、その中にエクセルの一部データを追加してフォルダ(OutFolder)に格納しています。

ツマ

年末の年賀状処理とかもこれで出来ると楽そうだね

③好きな場所に保存

そして最後に管理・共有がしやすいように指定ディレクトリに保存します。

今回は指定のフォルダ(OriginalFolede)内のエクセルファイルを参照して、

保存したいフォルダ(SaveFoleder)を別に指定してPDF化(①で作った関数)したものを保存します。

まずは作業中のディレクトリ内に上記フォルダを作った上で、下記のようにファイル格納先を参照します。

#現在の作業フォルダ位置から指定フォルダを参照
path = os.getcwd() 
excelFilePath = os.path.join(path,"OriginalFolede") 

次に、フォルダ内でエクセルファイル(.xlsxがファイル名につくもの)を参照します。

#ファイル一覧を取得しつつ、ファイル名から.xlsxを抜く
files = os.listdir(excelFilePath) 
for f in files:
    if ".xlsx" in f:
        work = f.strip(".xlsx") 

それぞれのエクセルファイルに対応したpdfの名前を作り、最後に①で作ったexcelToPDFの関数に適応します。

#元のファイル名.pdfの名前にしてexcelToPDFの関数を利用
excelFile = os.path.join(excelFilePath,f)
pdfFile = os.path.join(path,"出力データ",work+".pdf") 
excelToPdf(excelFile,pdfFile)

これで無事、自分で入れたい場所にファイルを保存することが出来ました。

ワタシ

一度やってしまえばあとは簡単に出来そうですね

まとめ 

上記を活用する際に、理解しておくべきポイントは以下3点でした。

今回の抑えドコ
  • PDFに置き換える
    ▷SimpleDocTemplateを使い条件を設定してPDF化
  • Wordに差し込む
    ▷Documentのdocxを使いWord化
  • 好きなフォルダに格納
    ▷os.path.joinを使いディレクトリを指定して保存

これでエクセルだけでなくWordやPDFへの変換やPC内での保存などの基本操作ができました。

詳しくは下記書籍を見ればもっとわかりやすく、上記の関数をググるだけでもかなりの数解説サイトがヒットするので調べながらやるのをオススメします。

ここまででエクセルで出来る自動化の骨子はそろったので、これらを組み合わせてどんなことが出来ると良いかを妄想しながら、どんどんプチ自動化を実践することで飛躍的に生産性があがります\(^o^)/

めんどうな作業が秒速で終わる! Excel×Python自動化の超基本
created by Rinker
¥2,134 (2026/02/05 22:19:37時点 Amazon調べ-詳細)
  • Kindle
  • Amazon
  • 楽天市場
  • Yahooショッピング

ご精読頂きありがとうございました!
m(_ _)m

【参考】Python初心者のお勉強のお供

▼PythonでExcelの操作を自動化する▼

【関連】Python×効率化 社内のexcel作業の自動化を試みる①

【関連】Python×効率化 社内のexcel作業の自動化を試みる②

【関連】Python×効率化 社内のexcel作業の自動化を試みる③

【関連】Python×効率化 社内のexcel作業の自動化を試みる④

【関連】Python×効率化 社内のexcel作業の自動化を試みる⑤

上記の内容と併せて実務で活かすという視点では下記の参考図書も合わせて確認すると理解が深まります(-_-)

▼オススメの参考書籍(Kindle)▼

Python2年生 データ分析のしくみ 体験してわかる!会話でまなべる!
created by Rinker
¥2,178 (2026/02/05 17:48:45時点 Amazon調べ-詳細)
  • Kindle
  • Amazon
  • 楽天市場
  • Yahooショッピング
Marketing Python マーケティング・パイソン AI時代マーケターの独習プログラミング入門(できるビジネス) できるビジネスシリーズ
created by Rinker
¥2,376 (2026/02/05 21:44:16時点 Amazon調べ-詳細)
  • Kindle
  • Amazon
  • 楽天市場
  • Yahooショッピング
Python実践データ分析100本ノック
created by Rinker
¥2,376 (2026/02/05 17:48:46時点 Amazon調べ-詳細)
  • Kindle
  • Amazon
  • 楽天市場
  • Yahooショッピング

▼おすすめの動画学習(Udemy)▼

>>ゼロからPythonで学ぶ人工知能と機械学習 【2023年最新版】

>>現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用

>>独学で身につけるPython〜基礎編〜【業務効率化・自動化】

【参考】Python初心者が抑えたいポイント集

Python(主にデータ分析・自動化)に関しては

下記に実践したポイントをまとめています。基本的にコピペするだけでそのまま使えます٩( ᐛ )و

あわせて読みたい
【Python入門】コピペしてそのまま使えるPythonの自動化プログラムまとめ ワタシ ども、らーにゃです。今回はPythonのプログラムについてまとめます。 Pythonをもっと身近なことに応用できないか? プログラミングをかじり始めた人で、こんなこ...

業務効率化・自動化においてはGoogle Apps Scriptもセットで学ぶことをオススメ!

こちらもコピペしてすぐに使えます!

あわせて読みたい
【GAS入門】コピペしてそのまま使えるGoogle Apps Scriptプログラム一覧 ワタシ ども、らーにゃです。今回はGASの活用についてまとめます。 身の回りのことをもっと自動化できないものか? 仕事でもプライベートでも忙しくなるほどに自動化の...

PythonとGoogle Apps Scriptどちらを深めようかを迷っていればこちら!

あわせて読みたい
【徹底比較】PythonとGASをどちらを学ぶべきか?実際に両方を学んで分かった違いとオススメ学習法 ワタシ ども、らーにゃです。今回はPythonとGASを比較していきます。 自分は非エンジニアだけど… 「もっともっと効率化したい!」 「プログラムを書けるようになりたい...
独学 プログラミング
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
  • 【手帳術】子供のライフプランを考える!手帳を使った「育児年表シート」の作り方
  • 【手帳術】必要なスキルを明確にする!「スキルの棚卸し表」の活用

この記事を書いた人

らーにゃのアバター らーにゃ

ビビっときたTipsや手帳術を発信します ٩( ᐛ )و

●家族:フルキャリ妻と子供2人

●資格:国家資格キャリアコンサルタント

●趣味:手帳歴20年 | 自作歴12年| デジプラ歴4年

関連記事

  • 【GAS】ショートカットを利用してApple Watch→スプレッドシートのデータ連携を行う
  • 【レビュー】ChatGPTの使い方 | プログラミング初心者の応用 (GAS/Python)
  • 【GAS】Google Fitのデータをスプレッドシートに引き抜くプログラムを考える
  • 【徹底比較】PythonとGASをどちらを学ぶべきか?実際に両方を学んで分かった違いとオススメ学習法
  • 【GAS】TogglのAPIを利用したデータ連携の仕様変更について
  • 【Python入門】コピペしてそのまま使えるPythonの自動化プログラムまとめ
  • 【Python自動化】GoogleスプレッドシートにPythonからデータを流し込む方法
  • 【Python自動化】タスクスケジューラで定時にPythonファイルを自動実行する方法

コメント

コメントする コメントをキャンセル

ブログの記事一覧
カナダでキャリコン/コーチをしながら理想のセカンドキャリア作るためのヒントや考え方をブログやYouTubeで発信中!

●家族:フルキャリ妻1人、子供2人
●資格:国家資格キャリアコンサルタント
●趣味:手帳歴20年 | 自作歴12年| デジプラ歴4年
人気の記事ランキングTOP5!
  • 【自作手帳】自作リフィルのおすすめテンプレート10選!(PDF無料ダウンロード可!)
  • 【2026最新】ジャーナリングのおすすめ本10選!Unlimited対応も!
  • 【自作手帳】Word,Excelで出来る!A5システム手帳のリフィル自作方法
  • 【無料】Goodnotes6で使えるデジタルプランナー・テンプレート10選(PDFダウンロード可)
  • 【保存版】Goodnotes6の使い方まとめ!PDFの読み込み・PDF化・メモの書き方を徹底解説
目次
検索
  • プロフィール
  • サイトマップ
  • プライバシーポリシー
  • お問い合わせ

© キャリアの実験室.

  • メニュー
  • ジャーナル
  • 自作手帳
  • アイデア
目次