「python セル 書式 コピー」
といった検索でアクセスがありました。
Pythonを使ってセルの書式をコピー&ペーストするにはどうすればいいのかを調べていたのでしょう。
どの外部ライブラリを使ってらっしゃるのかわかりませんが、この記事では表計算ソフトExcelを直接操作するライブラリxlwingsを使った簡単なサンプルをご紹介します。
xlwingsで書式のコピーと貼り付けを行うサンプル
下図のように、さまざまな書式がA1セルに設定され、
C1セルには何も書式が設定されていないブックがアクティブな状態で、以下のスクリプトを実行してください。
xw.Range('A1').copy()
xw.Range('C1').pasete(pasete='formats')
下図のようにA1セルの書式がC1セルに貼り付けられます。
Rangeオブジェクトのcopy()メソッドを使って、A1セルをコピーしておいてから、
xw.Range('A1').copy()
Rangeオブジェクトのpaste()メソッドの引数pasteに文字列「formats」を指定することで、書式の貼り付けを行っています。
xw.Range('C1').pasete(pasete='formats')
Excel VBAとの比較
Excel VBAでは、以下のようなSubプロシージャで、先ほどのxlwingsを使ったスクリプトと同様の処理が可能です。
Sub 書式のコピーと貼り付けを行う()
Range("A1").Copy
Range("C1").PasteSpecial xlPasteFormats
End Sub
このExcel上の処理を、VBAから行うのか、ライブラリxlwingsを使ってPythonで行うのかの違いです。
Windows上で動作するxlwingsの場合、xlwingsパッケージ直下にある_xlwindows.pyモジュールで定義されているRangeクラスの、以下のようなpaste()メソッドを呼んでいるようです。
def paste(self, paste=None, operation=None, skip_blanks=False, transpose=False):
pastes = {
"all": -4104,
None: -4104,
"all_except_borders": 7,
"all_merging_conditional_formats": 14,
"all_using_source_theme": 13,
"column_widths": 8,
"comments": -4144,
"formats": -4122,
"formulas": -4123,
"formulas_and_number_formats": 11,
"validation": 6,
"values": -4163,
"values_and_number_formats": 12,
}operations = {
self.xl.PasteSpecial(Paste=pastes[paste], Operation=operations[operation], SkipBlanks=skip_blanks, Transpose=transpose)
"add": 2,
"divide": 5,
"multiply": 4,
None: -4142,
"subtract": 3,
}
- 『Excel VBAユーザーのためのPythonプログラミング入門』発売に
- 拙著で紹介しているBooks/Bookが持つプロパティとメソッドの一覧
- 拙著で紹介しているSheets/Sheetが持つプロパティとメソッドの一覧
- 拙著で紹介しているRangeが持つプロパティとメソッドの一覧
最終更新日時:2023-10-13 11:46
- Newer:pandasのDataFrameをxlwingsでExcelに書き込みする-xw.view()
- Older:Word VBAのDifferentFirstPageHeaderFooterとは
Home » Python » xlwingsの使い方 » xlwingsで書式のコピー&ペーストを行う