8
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【自動化】Pythonでクリップボードを操作してExcelに表を貼り付ける

Last updated at Posted at 2020-05-31

クリップボードを操作したい

クリップボード(英: clipboard)は、コンピュータ上で、一時的にデータを保存できる共有のメモリ領域のことである。
(Wikipediaより)

Pythonでクリップボードを操作したいときなんてあるの?と思われるかもしれません。

例えばこんな状況を考えてみてください。

Pythonで処理したdataframe(表テーブル)をExcelに貼り付けたい。
このExcelファイルが自分のパソコンの中にあるのなら、Pythonでそのファイルに直接書き込めばいいわけですが、そのファイルは社内のサーバー上にあってPythonから直接アクセスすることが難しい…。

こんな状況ならば、dataframeを一旦、クリップボードにコピーしておいて、手動で該当のExcelファイルを開いて貼り付ければ便利ですよね。

pyperclipでクリップボードを操作

クリップボードにコピーしたり、クリップボードから貼り付けるにはpyperclipというモジュールを使います。

このpyperclipはとてもシンプルで、pyperclip.copy()pyperclip.paste()がほぼすべてです。

pyperclip.png

操作 関数
クリップボードへコピー pyperclip.copy()
クリップボードから貼り付け pyperclip.paste()

Excelに表形式で貼り付けるためのクリップボードの作り方

例えばExcelの中の表をコピーして、Excelの中の別の場所に貼り付けるとちゃんと表になっています。

当たり前かもしれませんが、少し不思議な気がしませんか?
クリップボードではこの「表形式」をどのように保持しているのでしょうか?

確認してみましょう。
下のようなExcelの表があります。

pyperclip_excel_before.png

この表のA1~E6までをCrtl+Cでクリップボードにコピーします。
そして、次はPythonで次のように実行してクリップボードの中身を確認してみます。

import pyperclip

pyperclip.paste()
実行結果

'大井竹雄\tオオイタケオ\t男\t1960/8/30\t千葉県\r\n長井恵子\tナガイケイコ\t女\t1999/5/21\t高知県\r\n茂木美香\tモギミカ\t女\t1989/3/27\t埼玉県\r\n那須貴子\tナスタカコ\t女\t1981/9/29\t広島県\r\n杉浦昭一\tスギウラショウイチ\t男\t1991/10/31\t兵庫県\r\n'

隣の列とは**タブ(\t)で、隣の行とは改行コード(\r\n)**で区切られているのがわかりますね。

clipboard2excel.png

つまり、このようにタブ(\t)と改行コード(\r\n)で区切った文字列を作ってpyperclip.copy()でクリップボードにコピーしてあげれば、あとはCtrl+VでExcelに表形式で貼り付けることができるというわけです。

やってみましょう。

下のように実行して貼り付けたい文字列をクリップボードにコピーしておきます。

pyperclip.copy("佐々木茂\tササキシゲル\t\t1964/2/13\t和歌山県\r\n三田かなえ\tミタカナエ\t\t1979/10/1\t秋田県\r\n")

そしてExcelを開き、貼り付けてみると…
pyperclip_excel_after.png

ちゃんと表として貼り付けることができましたね!

8
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?