SlideShare a Scribd company logo
PythonでEXCELを触ってみる
2015/09/29
岡山Python勉強会
@k5_yamayama
山手 恵悟(やまやま)
@k5_yamayama
岡山の某DBメーカー勤務
ユーザーCE→社内SE→企画開発→
→サーバー管理→営業に至る。
(これってフルスタック…?)
自己紹介
Okayama Engineers Community(通称:OITEC)
運営スタッフやってます。
岡山Python勉強会(通称:おっPy)
立ち上げスタッフ
主催者のはずの“#た”が福山に戻っちゃった
で現在は、ほぼ主催者状態。
コミュニティ
はじめに
今回は、Pythonを使ってExcelを触ってみよう
と思います。
注意事項
本セッションは、やまやま個人が調査・検証した
結果を発表するもので、間違いやこれにより損害
が生じても一切責任を負いませんのでご了承くだ
さい。
ちなみに
最近、VBAで作業している人?
ちなみに
結構、使う頻度が少なかったりす
るのでどうやって書くか忘れてグ
グったりするほうが多かったりし
ませんか?
ちなみに
そんな時にコードは、Pythonで
書いて動かしたりできると便利で
はないかと思い調べてみました。
今日の目的とゴール
 目的
PythonでExcelを操作する方法を理解
する。
 ゴール
実際に触ってみてどういった動きにな
るかやってみる。
ExcelをPythonで動かすために必要なも
の
Excel
Python(今回は2.7で…)
Excel操作用のPythonモジュール
では、どんなモジュールがあるのか?
Excel操作用Pythonモジュール
 DataNitro INC.が作ったExcelプラグイン
でExcelのリボンに操作用の項目が追加され
る。
 有償(30日間のトライアルあり) $99/年
 使い勝手が良かったがトライアル期間終わっ
た。
DataNitro
Excel操作用Pythonモジュール
 zoomeranalyticsが作ったExcelプラグイ
ンでVBAからPythonを呼び出す仕組み。
 無償(BSDライセンス)
xlwings
今回は
xlwingsを使ってみようと思います。
インストール
必要なモジュール
pywin32(win32apiを操作するのに必要)
numpy(デモ用で必要なのでインストール)
xlwings(Excel操作用)
インストール
pywin32
以下のURLよりダウンロードしexeから
イントール
http://u111u.info/o9a8
ハマりどころとしてpythonのバージョンと64Bit or
32Bit(pythonの…)を間違えるとうまくいかないので注
意が必要(私はここで最初に悩みました。)
インストール
numpy
以下のURLよりダウンロードしexeから
インストール
http://u111u.info/o9aE
現行Ver.は、1.9.2のインストーラを使用
ハマりどころとしてpip installで実施するとC++のラ
ンタイムが必要だったりするのが結構めんどうだったので
今回はインストーラを使用
まずはコンソールで動かしてみる
xlwings.orgのQuick Startから
> from xlwings import Workbook, Sheet, Range, Chart
> wb = Workbook()
> Range(‘A1’).value = ‘Foo 1’
> Range(‘A1’).value
‘Foo 1‘
> Range(‘A1’).value = [['Foo 1‘, 'Foo 2‘, 'Foo 3'], [10.0, 20.0, 30.0]]
> Range(‘A1’).table.value
[['Foo 1‘, 'Foo 2‘, 'Foo 3'], [10.0, 20.0, 30.0]]
> Sheet(1).name
‘Sheet1’
> chart = Chart.add(source_data=Range(‘A1’). table)
実際に動かしてみると…
 結構インタラクティブに動く
 自動マクロ的なことができます
 よくある感じだとDBからデータを取ってきて事前
に作っておいたセルにデータを置いてグラフ作っ
たりするマクロなんかに使うといいかも
マクロからのPython呼び出し
 事前準備
 マクロ付きExcelファイルを作成(~.xlsm)
 ファイルのインポートにてxlwings.basを登録(重要)
 実行用のPythonファイルの作成
 注意点
 xlsmファイルと同一フォルダ内に~.pyファイルを置かな
いとちゃんと動きません(階層を追って見つけることがで
きないため)
マクロからのPython呼び出し
 xwings.basは何のために必要?
 python処理用ファイルでコレを使って処理をして
いる
 basファイルのありかはPythonインストールフォ
ルダ内の/Lib/site-packages/xlwings
 xwings.bas内のPYTHON_WIN = “”(MACは
PYTHON_MAC = ““)にパスの指定を行う。
マクロからのPython呼び出し
 Python内のコード
# -*- coding: utf-8 -*-
import numpy as np
from xlwings import Workbook, Range
def rand_numbers():
""" produces standard normally distributed random
numbers with 10
shape (n,n)""“
# Creates a reference to the calling Excel file
wb = Workbook.caller()
# Write desired dimensions into Cell B1
n = int(Range('Sheet1', 'B1').value)
rand_num = np.random.randn(n, n)
Range('Sheet1', 'C3').value = rand_num
マクロからのPython呼び出し
 マクロのコード
Sub ボタン1_Click()
RunPython ("import mymodule;
mymodule.rand_numbers()")
End Sub
やっていることは、
1.モジュールの呼び出し
2.メソッドの呼び出し
実際に動かしてみると…
 コンソールから動かすのと変わんない
 メソッド単位に処理を分けれるのは便利
 一括でモジュール読み込むのってできないのかな?
まとめ
 外部から処理がインタラクティブにできるので結構便利
(外部処理的な使い方は便利かも)
 複雑な統計処理などのVBAでやるには面倒なところは
Pythonのライブラリに任せるとラクに処理ができる
 別ファイルでの管理ができるのでソース管理がラクかも
 パス等の依存があるのでvirtualEnv等を使ってうまく
やらないと環境依存で動かない可能性がある
 日本語の処理が…
参考URL
xlwings
http://xlwings.org/
Python for Windows Extensions (Pywin32)
http://sourceforge.net/projects/pywin32/files/pywin32
Numerical Python(numpy)
http://sourceforge.net/projects/numpy
DataNitro
https://datanitro.com/
ご清聴ありがとうございました。

More Related Content

PPTX
Pythonのユニットテスト
PPTX
Ipythonを使ってみよう
PPTX
PPTX
使ってみようPTSV
PDF
IPython notebookを使おう
PPTX
Pythonでpdfをいじってみる
PDF
LT3「Python を使ってExcel ファイルの修正」
PPTX
210526 Power Automate Desktop Python
Pythonのユニットテスト
Ipythonを使ってみよう
使ってみようPTSV
IPython notebookを使おう
Pythonでpdfをいじってみる
LT3「Python を使ってExcel ファイルの修正」
210526 Power Automate Desktop Python

What's hot (20)

PPTX
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
KEY
20110804 hls research
PDF
インターネット生放送を支える技術としくみ2015年版
PDF
yidev 第18回勉強会 「業務でSwiftで3ヶ月開発してきたので一旦振り返り」
PPTX
Javaにおけるネイティブコード連携の各種手法の紹介
PDF
Spring Bootをはじめる時にやるべき10のこと
PDF
Windows で動かす TensorFlow
PDF
2015/11/15 Javaでwebアプリケーション入門
PDF
Reading 1st dRuby
PDF
Tensorflow
PDF
INSPIRE FUTURE GENERATIONS
PDF
失敗から学ぶAPI設計 #ccc_h4 #jjug #jjug_ccc JJUG CCC 2013 Spring
PDF
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
PDF
iPhoneアプリを Javaで書くよ?
PDF
第3回日本seleniumユーザーコミュニティ勉強会
PDF
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
PPTX
未来のプログラミング技術をUnityで -UniRx-
PDF
Apple Watch 間通信
PDF
Hello Java
PDF
Core Image Tips & Tricks in iOS 9
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
20110804 hls research
インターネット生放送を支える技術としくみ2015年版
yidev 第18回勉強会 「業務でSwiftで3ヶ月開発してきたので一旦振り返り」
Javaにおけるネイティブコード連携の各種手法の紹介
Spring Bootをはじめる時にやるべき10のこと
Windows で動かす TensorFlow
2015/11/15 Javaでwebアプリケーション入門
Reading 1st dRuby
Tensorflow
INSPIRE FUTURE GENERATIONS
失敗から学ぶAPI設計 #ccc_h4 #jjug #jjug_ccc JJUG CCC 2013 Spring
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
iPhoneアプリを Javaで書くよ?
第3回日本seleniumユーザーコミュニティ勉強会
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
未来のプログラミング技術をUnityで -UniRx-
Apple Watch 間通信
Hello Java
Core Image Tips & Tricks in iOS 9
Ad

Similar to Pythonでexcel (20)

PDF
PlaySQLAlchemy: SQLAlchemy入門
PDF
みんなのPython勉強会#111 LT資料 "AIとサステナビリティについて"
KEY
スクラムプロジェクト準備(公開用) No.31
PDF
缶詰屋さんの課題解決にスクラムを使ってみた
PDF
Introduction
PPTX
20151118パートナーソリューションセミナー2015プレゼンテーション public
PPTX
「自動化...か、かっこいいタル」(憧れ)から始める自動化
PPTX
SeleniumとPhantomJSで自動化サーバーレス(RPALT vol.1 LT)
PDF
PlaySQLAlchemyORM2017.key
PDF
S08 t0 orientation
PDF
勉強会のフィードバックから得られた自動化への壁
PDF
SPI Japan 2012 「SEPG活動とアジャイルの親和性を考える」ポジショントーク用
PPTX
IoTの原点
PDF
DevOps、その前に
PDF
Python & PyConJP 2014 Report
PDF
皆さん!ふくてんが来ましたよ!!
PDF
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
PDF
PythonのGUI_2018 with NSEG
PPTX
excel を捨てよ blockdiag を使おう 2011/05 #tqrk03 (tokyu.rb)
PlaySQLAlchemy: SQLAlchemy入門
みんなのPython勉強会#111 LT資料 "AIとサステナビリティについて"
スクラムプロジェクト準備(公開用) No.31
缶詰屋さんの課題解決にスクラムを使ってみた
Introduction
20151118パートナーソリューションセミナー2015プレゼンテーション public
「自動化...か、かっこいいタル」(憧れ)から始める自動化
SeleniumとPhantomJSで自動化サーバーレス(RPALT vol.1 LT)
PlaySQLAlchemyORM2017.key
S08 t0 orientation
勉強会のフィードバックから得られた自動化への壁
SPI Japan 2012 「SEPG活動とアジャイルの親和性を考える」ポジショントーク用
IoTの原点
DevOps、その前に
Python & PyConJP 2014 Report
皆さん!ふくてんが来ましたよ!!
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
PythonのGUI_2018 with NSEG
excel を捨てよ blockdiag を使おう 2011/05 #tqrk03 (tokyu.rb)
Ad

Pythonでexcel