Home » Python » xlwingsの使い方 » xlwingsで書式のコピー&ペーストを行う

xlwingsで書式のコピー&ペーストを行う

動作検証バージョン:Windows 10 Pro(64-bit)+ 64bit Excel(バージョン2302 ビルド16130.20218 キック実行)+ Python 3.11.1(64-bit) + xlwings 0.29.1

「python セル 書式 コピー」
といった検索でアクセスがありました。

Pythonを使ってセルの書式をコピー&ペーストするにはどうすればいいのかを調べていたのでしょう。

どの外部ライブラリを使ってらっしゃるのかわかりませんが、この記事では表計算ソフトExcelを直接操作するライブラリxlwingsを使った簡単なサンプルをご紹介します。

xlwingsで書式のコピーと貼り付けを行うサンプル

下図のように、さまざまな書式がA1セルに設定され、

C1セルには何も書式が設定されていないブックがアクティブな状態で、以下のスクリプトを実行してください。

import xlwings as xw

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 = {
        "add": 2,
        "divide": 5,
        "multiply": 4,
        None: -4142,
        "subtract": 3,
    }

    self.xl.PasteSpecial(Paste=pastes[paste], Operation=operations[operation], SkipBlanks=skip_blanks, Transpose=transpose)

最終更新日時:2023-10-13 11:46

[スポンサードリンク]

Home » Python » xlwingsの使い方 » xlwingsで書式のコピー&ペーストを行う

「xlwingsの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.