Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

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

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

クリップボード(英: 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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
9
Help us understand the problem. What are the problem?