xlwings – Make Excel Fly with Python

15
O P E N D A T A S C I E N C E C O N F E R E N C E_ BOSTON 2015 @opendatasci xlwings Felix Zumstein

Transcript of xlwings – Make Excel Fly with Python

Page 1: xlwings – Make Excel Fly with Python

O P E N D A T A S C I E N C E C O N F E R E N C E_ BOSTON 2015

@opendatasci

xlwings Felix Zumstein

Page 2: xlwings – Make Excel Fly with Python

About me • Startup (2014, Zurich):

– Mainly Python for Finance – Web based trading solutions (Interactive Brokers)

– Lots of Excel – Open-source: xlwings/ExcelPython

• Previously: 9yrs in Banking /Asset Mgmt • Background in Finance & Economics

2

Page 3: xlwings – Make Excel Fly with Python

What’s in this talk?

3

Page 4: xlwings – Make Excel Fly with Python

The open-source Python/Excel Landscape

4

• Pywin32 •  xlwings • ExcelPython

Read/Write Program/Interact •  xlwt/xlrd • XlsxWriter • OpenPyxl

Page 5: xlwings – Make Excel Fly with Python

Why xlwings? – 6 Reasons

5

Page 6: xlwings – Make Excel Fly with Python

(1) Installation

6

•  pip/conda install xlwings •  or equally easy:

Page 7: xlwings – Make Excel Fly with Python

(2) Cross-Platform

7

+

Page 8: xlwings – Make Excel Fly with Python

(3) Flexibility

8

Version

2.6 2.7 3.1 3.2 3.3 3.4

32-bit 64-bit

32-bit 64-bit

2003 2010 2011 (Mac) 2013 2016 (Win + Mac*)

Architecture Version Architecture

*under development

Page 9: xlwings – Make Excel Fly with Python

(4) Simplicity

9

>>>  from  xlwings  import  Workbook,  Range    

>>>  wb  =  Workbook()  >>>  Range("A1").value  =  my_variable  

•  Strings •  Numbers •  DateTime •  Lists (nested) •  NumPy arrays •  Pandas DataFrames •  Blaze Data container (planned)

Page 10: xlwings – Make Excel Fly with Python

(5) Works back and forth

10

>>>  wb  =  Workbook()  >>>  Range("A1").value  =  my_variable  

Sub  MyFunction()    RunPython  ("import  mymodule;mymodule.myfunction()")  End  Sub  

Page 11: xlwings – Make Excel Fly with Python

(6) ExcelPython for UDFs (Windows only)

11

from  xlpython  import  xlfunc  import  numpy  as  np    

@xlfunc  def  matrix_mult(x,  y):          x  =  np.atleast_2d(np.array(x))          y  =  np.atleast_2d(np.array(y))          return  x.dot(y)  

{=matrix_mult(A1:B2,D1:E2)}  

Access from Excel via Array Formula:

Write User Defined Functions in Python:

Page 12: xlwings – Make Excel Fly with Python

What’s next?

12

Page 13: xlwings – Make Excel Fly with Python

What’s next?

• Add-in • Full integration of xlwings/ExcelPython • Add more features: matplotlib etc. •  Someday…

– Google Sheets – LibreOffice/OpenOffice

13

Page 14: xlwings – Make Excel Fly with Python

julia>  using  PyCall  julia>  @pyimport  xlwings  as  xw    julia>  xw.Workbook()  julia>  xw.Range("A1",  asarray=true)[:table][:value]    

Use xlwings from Julia

14

>>>  from  xlwings  import  Workbook,  Range    

>>>  wb  =  Workbook()  >>>  Range("A1",  asarray=True).table.value  

Page 15: xlwings – Make Excel Fly with Python

DEMO xlwings.org

15