【Python】Excelの図形の中のテキストを置換する
Pythonを使ってExcelファイルの図形内にあるテキストを置換します。 また、図形の中のテキストを読み取ったり、図形 …
PythonでExcelファイルのセル内の文字列を置換します。
テンプレートとなるようなファイルがあり、その中の文字列だけを一部置換して新しいファイルとして出力する、みたいな使い方ができるかと思います。
イメージが湧きやすいように、置換前と置換後のExcelファイルのスクリーンショットを載せておきます。
なお、この記事で説明する方法では、Excel自体がインストールされている環境でないと使えませんので注意してください。
次のコマンドを実行してwin32comをインストールしてください。
pip install pywin32
次のようなフォルダ構成を想定しています。
/
├ template.xlsx ← 対象のエクセルファイル
└ main.py ← Pythonスクリプト
以下がPythonのスクリプトとなります。
ハイライトされている部分が置換処理を行っている個所になります。
import win32com.client
from pywintypes import com_error
from pathlib import Path
# 検索する文字列: 置換する文字列
REPLACE_TXTS = {
'{{セルテキスト1}}': 'こんにちは。',
'{{セルテキスト2}}': 'おはようございます。'
}
nowdir = Path(__file__).absolute().parent
excel = win32com.client.Dispatch('Excel.Application')
excel.Visible = False
try:
# xlsxファイルを開く
wb = excel.Workbooks.Add(str(nowdir / 'template.xlsx'))
sheet = wb.WorkSheets(1)
sheet.Activate()
# セル内のテキストを置換
rg = sheet.Range(sheet.usedRange.Address)
for search_txt, replace_Txt in REPLACE_TXTS.items():
rg.Replace(search_txt, replace_Txt)
# 別名で保存
wb.SaveAs(str(nowdir / 'new.xlsx'))
except com_error as e:
print('失敗。', e)
else:
print('成功。')
finally:
wb.Close(False)
excel.Quit()
処理の流れを簡単に書くと以下のようになります。
置換する文字列を定義しておく
まずは、置換したい文字列と、それをどんな文字列に置換するか定義しておきます。後の置換処理で使用します。
xlsxファイルを開く
エクセルファイルを開いてシートを選択(Activate
)します。
Workbooks.Add
しているのでファイルを開くというよりは、そのファイルをコピーして作業中のブックとして使用する感じですね。
置換処理を行う
sheet.UsedRange.Address
でシートで使われたセル範囲を取得します。そして、検索する文字列と置換する文字列を指定してReplace
関数を実行します(実際にExcel上で置換を実行するイメージですね)。
xlsxファイルを保存する
元のファイルが置き換わるのが嫌なので、別名でファイルを保存します。
このスクリプトを実行すると、冒頭のスクリーンショットのようにセル内の文字列が置換されます。
参考として今回使った関数のリファレンスへのリンクを置いときます。
VBAのリファレンスですが機能としては同じだと思います。
Pythonを使ってExcelファイルの図形内にあるテキストを置換します。 また、図形の中のテキストを読み取ったり、図形 …
Pythonを使ってExcelシートをPDFに変換する方法を書きます。 PythonでExcelファイルをいじるライブラ …
PowerShellでパスワード付きのエクセルブックを開きます。 エクセルブックを開くメソッド(Openメソッド)を実行 …
PowerShellを使ってExcelのセル内の文字列を置換します。 Excelの検索・置換機能をPowerShellか …
Windows10にPythonをインストールします。 公式サイトからインストーラーをダウンロードし、それを自分のPCで …
Python & Seleniumで作成したプログラムを実行形式(.exe)にします。 特に今回は一つのexeフ …
Pythonを使ってiPhone/iPadだけでyoutubeなどの動画をダウンロードするスクリプトを作成しました。 そ …