You are on page 1of 6

Dividing shapes into layers Planxty and Little Musgrave

Linking to Python with Excel-Python, and Python


matrix functions
Posted on May 22, 2014
I have been experimenting for a few weeks with a new package linking Excel to Python, by
the name of ExcelPython. Here is what the author says about it:
ExcelPython is a lightweight, easily distributable library for interfacing
Excel and Python. It enables easy access to Python scripts from Excel VBA,
allowing you to substitute VBA with Python for complex automation tasks
which would be facilitated by Pythons extensive standard library.
The main points of differentiation from PyXll are:
It is open source and free for all applications (GNU Lesser General Public License)
All routines must be called via VBA (examples will be given in a later code, and may
also be viewed in the download file)
The number of data-types supported is much more restricted; excel variant arrays
being transferred as Python lists of lists.
Documentation is also lightweight
Being a non-commercial package, support will be limited, although to be fair, the author
does seem to respond promptly to all queries on the discussion forum.
Data is transferred to Python via COM, which allows data to be passed by reference.
There are no facilities for setting up Excel Menus from Python code (so far as I know),
and the Python docstrings are not transferred to the Excel function wizard.
I found installation to be straightforward with my Anaconda Python setup. The only
problem I had was that if PyXll is installed, the add-in must be disabled before opening any
file with ExcelPython code, otherwise an immediate crash results. To disable PyXll, go to
File-Options-Addins, click the Manage button, and unselect PyXll from the list of add-ins.
It may easily be re-enabled from the same menu, when required.
As an example of the use of Excel-Python, I have adapted the Matrixpyxll spreadsheet.
The new file may be downloaded from MatrixXLpy.zip, including full open source code.
The functions included in the new file are:
Categories
Select Category
RSS Feed
RSS - Posts
RSS - Comments
Search NewtonExcelBach
Search
Archives
Select Month
Top Posts
Using LINEST for non-linear
curve fitting
Drawing in Excel 7 - Creating
drawings from coordinates
Cubic Splines
Clearing excess formats
Daily Download 8: Drawing in
Excel
Section Properties of Defined
Shapes - Spreadsheet
Downloads by category
The Deserter
Arrays vs Collections vs
Dictionary Objects (and
Dictionary help)
Writing an array to a
worksheet range - correction
Recent Comments
Alglib/Python spline on
Alglib/Python linear and
non-l
online excel trainin on
Alglib/Python spline
functions
andre on Dividing shapes
into laye
dougaj4 on Dividing shapes
into laye
dougaj4 on 3DFrame Ver
1.03 and Frame4 Ve
andre on Dividing shapes
into laye
dougaj4 on Alglib/Python
linear and non-l
ericremoreynolds on
Alglib/Python linear and
non-l
online excel trainin on
Alglib/Python linear and
non-l
Newton Excel Bach, not (just) an Excel Blog
Home About Newton Excel Bach Downloads Downloads by category Interactive Design Services Using Array Functions and UDFs
Linking to Python with Excel-Python, and Python matrix functions | Newton Excel Bach, not (just) an Excel Blog 03/08/2014
https://newtonexcelbach.wordpress.com/2014/05/22/linking-to-python-with-excel-python-and-python-matrix-functions/ 1 / 6
The matrix functions are used in a similar way to the built-in Excel matrix functions, and
provide identical results, but performance is very much better for large matrices.
Eigenvalue and Eigenvector functions are provided, which have no equivalent in Excel.
andre on Reinforced Concrete
UL
dougaj4 on Non linear
regression 2; ALG
Edson on 3DFrame Ver 1.03
and Frame4 Ve
dougaj4 on Tanh-Sinh
Quadrature V4.0
Katto Ishimura on Tanh-Sinh
Quadrature V4.0
Graeme Dennes on Tanh-Sinh
Quadrature V4.0
Blogroll
2toria
Adaptive Complexity
AJP Excel Information
Andrews Excel Tips
Arches
Bacon Bits
Code For Excel And Outlook
Blog
Colin Caprani
Contextures Blog
Cosmic Horizons
Daily Dose of Excel
Dick Moffat's Spreadsheet Blog
Excel Blog Headlines
Excel Do, Dynamic Does
Excel Hero
Excel Unusual
FastExcel
Grumpy Old Programmer
In the Dark
Jan Karel Pieterse
Jon Peltiers Blog
Letters to Nature
Math Programming
Methods in Excel
Not Only Bridges
Pearson Software Consulting
Plus Magazine
Pointy Haired Dilbert
RAD Excel
Ron de Bruin
Simple Supports
Smurf on Spreadsheets
The Happy Pontist
The Math Less Traveled
The Numerical Methods Guy
The Spreadsheet Page
VSTO, .NET and Excel
xll add-in library
Family Links
Bare Pictures
EMERGENCE
Furniture Directions
Kerinne Jenkins
Linking to Python with Excel-Python, and Python matrix functions | Newton Excel Bach, not (just) an Excel Blog 03/08/2014
https://newtonexcelbach.wordpress.com/2014/05/22/linking-to-python-with-excel-python-and-python-matrix-functions/ 2 / 6
A variety of functions are provided to solve systems of simultaneous equations. The
examples shown here on small data-sets provide identical results to use of the built-in
MInverse and MMult functions, but provide much better performance, especially with
large data sets.
Functions linking to the PySparse library provide much better performance with large
sparse systems, and also allow the solution of systems far larger than can be
accommodated by systems operating on the full matrix.
Run times for 8 different functions are shown below with 4 different systems of equations:
A small 10 x 10 system, solved 1000 times.
A 1000 x 1000 system, solved once
A sparse 1000 x 1000 system
A sparse 10945 x 10945 system (sparse solvers only, this system would be much too
large for the solvers operating on the full matrix)
Linking to Python with Excel-Python, and Python matrix functions | Newton Excel Bach, not (just) an Excel Blog 03/08/2014
https://newtonexcelbach.wordpress.com/2014/05/22/linking-to-python-with-excel-python-and-python-matrix-functions/ 3 / 6
For the small and medium sized dense systems the standard solvers were found to be
significantly faster than the sparse solvers, although it should be said that the code I used
for setting up the sparse matrices was probably far from optimum. With the medium sized
sparse matrix the sparse solvers were significantly faster than the others, which had
almost identical run times to the dense matrices of the same size. The iterative solver was
marginally faster than the others with the medium sized sparse matrix, but with the large
sparse matrix it was 5-10 times faster than the other sparse solvers.
The data transfer time reported on the bottom row is the difference between the total run
time in VBA and the run time of the Python code. Note that this is a significant part of the
total, especially for the larger dense matrix which required the transfer of a matrix of 1
million doubles. To minimise this overhead the data transferred from Excel to Python
should be minimised, with the matrices being created in Python, using the functions
provided in the PySparse library where possible.
The next post in this series will look at the VBA code required to call the Python code, and
also differences required in the Python coding, compared with that required when Pyxll is
used.
Share this:
Facebook LinkedIn 1 Tumblr Twitter Google

About these ads

Related
Python for VBA users - 1
Evaluating text and Integration with Python and ALGLIB
Download update - Python downloads
Linking to Python with Excel-Python, and Python matrix functions | Newton Excel Bach, not (just) an Excel Blog 03/08/2014
https://newtonexcelbach.wordpress.com/2014/05/22/linking-to-python-with-excel-python-and-python-matrix-functions/ 4 / 6
Dividing shapes into layers Planxty and Little Musgrave
This entry was posted in Arrays, Excel, Finite Element Analysis, Frame Analysis, Link to Python, Maths, Newton,
NumPy and SciPy, UDFs, VBA and tagged Excel, ExcelPython, Maths, Matrix Functions, Python, Simultaneous
equations, sparse matrix solvers, UDF, VBA. Bookmark the permalink.
5 Responses to Linking to Python with Excel-Python, and
Python matrix functions
Pingback: Python Matrix Functions with ExcelPython 2 | Newton Excel Bach, not (just) an Excel Blog

bjoernstiel says:
May 24, 2014 at 4:44 am
Thanks for the interesting write-up. I can see the pros/cons of Excel-Python vs
PyXLL. The former probably appeals more to those whove been doing VBA
whereas PyXLL feels more *natural* if you come from the traditional C API/XLL
background. Theres also a new one Ive come across recently, called xlwings
looks similar to Excel-Python.
Definitely looking forward to the next post on this, would be interested to know
what the performance difference between PyXLL and Excel-Python (having the
COM overhead in mind). Thanks!
Reply

dougaj4 says:
May 24, 2014 at 10:06 am
Thanks bjoern. Xlwings certainly looks interesting!
On the performance question, Im just playing with the code that was
most recently posted in the forum on the ExcelPython site. Im getting a
huge reduction in the data transfer overhead time, but Im not sure why
at the moment! Ill certainly post something here when I have some
numbers that are reasonably representative.
Reply

ericremoreynolds says:
June 5, 2014 at 6:16 pm
xlwings does indeed look very interesting I remember coming
across it a while ago, before even starting on ExcelPython I think,
but I cant remember why I decided to go ahead with my own
interface anyway.

online excel training says:


May 24, 2014 at 11:26 pm
Interesting approachvery cool. Thanks for sharing.
Reply
Linking to Python with Excel-Python, and Python matrix functions | Newton Excel Bach, not (just) an Excel Blog 03/08/2014
https://newtonexcelbach.wordpress.com/2014/05/22/linking-to-python-with-excel-python-and-python-matrix-functions/ 5 / 6
Newton Excel Bach, not (just) an Excel Blog
Leave a Reply
Enter your comment here... Enter your comment here...
The Twenty Ten Theme. Blog at WordPress.com.
Follow Follow
Linking to Python with Excel-Python, and Python matrix functions | Newton Excel Bach, not (just) an Excel Blog 03/08/2014
https://newtonexcelbach.wordpress.com/2014/05/22/linking-to-python-with-excel-python-and-python-matrix-functions/ 6 / 6

You might also like