Home » excel » python – converting excel positioning to numbers

# python – converting excel positioning to numbers

Posted by: admin May 14, 2020 Leave a comment

Questions:

I’m a new bee in python and am trying to convert some excel coordinates say A12 to a number how can I separate the A from 12 to do that? or is there any other way?

thanks

How to&Answers:

If you’re dealing with Excel files, then it’s worth having the `xlrd` (reading), `xlwt` (writing) and `xlutils` (utilities for copying/filtering sheets etc…) libraries. The easiest way to install those is to `pip install xlutils` and you’ll get the others as dependencies.

Then you can use:

``````>>> import xlwt
>>> xlwt.Utils.cell_to_rowcol2('A12') # Your original coords
(11, 0)
>>> xlwt.Utils.cell_to_rowcol2('AB31') # ex by @nooodl
(30, 27)
``````

Note these are zero-based 2-tuple’s of (row number, column number)

You also get the inverse for free:

``````>>> xlwt.Utils.rowcol_to_cell(30, 27)
'AB31'
``````

As well as other goodies including absolute, relative ranges etc… etc…

### Answer：

Try something like this:

``````import re

def column_index(column_name):
acc = 0
for c in column_name:
assert 'A' <= c <= 'Z'
acc = acc * 26 + (ord(c) - ord('A') + 1)
return acc

def cell_coords(cell):
match = re.match(r'([A-Z]+)(\d+)', cell)
if not match:
raise ValueError('Invalid cell format: ' + cell)
x = column_index(match.group(1))
y = int(match.group(2))
return (x, y)

assert cell_coords('AB31') == (28, 31)
``````