Iterating Through the Data
00:00
Now that you can load the worksheets, it’s time to put their data to use. openpyxl
has a couple of different ways to iterate through the data in your worksheets and, in some ways, should feel familiar if you’re used to doing this in Excel.
00:11
So, go ahead and open up an interpreter session and do your imports. So, from openpyxl import load_workbook
. Say that workbook
is going to equal load_workbook
with the filename="sample.xlsx"
, and the sheet
is going to equal workbook.active
. In a way that’s very similar to Excel, you can slice through the rows and columns using a :
(colon) to separate the top-left and bottom-right cells. So let’s say sheet
, and you want to access ["A1:C2"]
, like that.
00:45
You can see here that you actually end up with a tuple of tuples, and in each tuple are the cells. So A1
, B1
, and C1
, and then A2
, B2
, and C2
.
00:56 And I’m actually going to go over to the spreadsheet and change the sheet name to just amazon, so that it prints out a bit better.
01:05 Save that, and then let’s reload the workbook and then reload the sheet.
01:13
Try that again. And yeah, that’s a bit cleaner. So now, you can really see that A1
, B1
, and C1
and then A2
, B2
, and C2
, just like that.
01:24
Okay. And just like in Excel, if you ever want to access an entire column, you can say sheet
and then just put in the column letter. So if you want to see everything, that’s in "A"
, you can do that.
01:36
And if you look, it’s counting all the way down to row 100
, starting from A1
. Likewise, if you want to access a couple of columns, you can just put a :
between them.
01:49
So "A:B"
(A to B) would be like that, and this grabs multiple columns. So, something to note here is you have A1
, A2
, A3
, and so on, and then all the B
’s are in a row, too.
02:02
So, of the tuples that are returned, each tuple contains an entire column. If you want to grab an entire row, you can get those the same way. Let’s say you just want to grab row 5, just put in the row number as an integer, run that, and you can see A5
, B5
, C5
, and so on.
02:21
These are all contained in a tuple. openpyxl
also provides generators to go through the data, which might feel a bit more like Python than Excel.
02:30
.iter_rows()
and .iter_cols()
can take a range of rows and columns, and then iterate through the cells. These will also return tuples, which are either entire rows or columns, depending on which one you call.
02:41
So, to try this out, say something like for row in sheet
and then call the .iter_rows()
method and say that min_row
is going to equal 1
, max_row
is going to equal 2
, min_col
is going to equal 1
, and max_col
is going to equal 3
, like, so. And then, just print the row
.
03:06
There you go! A1
, B1
, C1
, A2
, B2
, and C2
. This will work for columns, too. So, for column in sheet
I’m going to call .iter_cols()
, and then with the same name parameters—so, min_row=1
, max_row=2
, min_col=1
, and
03:27
max_col=3
—and make sure that’s an underscore. And do the same thing, but print column
, this time.
03:37
And now you can see, you get A1
and A2
, B1
and B2
, and C1
and C2
. Now, you might be noticing here that this is returning the entire Cell
object.
03:46
So, if you just need the values, there’s a parameter values_only
that you can set. Take a look at this. It says something like for value in sheet
, and this time do rows.
03:57
So, min_row=1
, max_row=2
, min_col=1
, and max_col=3
, and now pass in
04:08
values_only
set to True
. Come back here, print the value
, and now you should see the resulting values from those cells, instead of the Cell
objects. Finally, if you want to go through the entire worksheet and you don’t have any min or max rows or columns, you can just say something like for row in sheet
and then access the .rows
property. So if you go print(row)
from here, you should see that everything prints out just like that.
04:41
And column would be the same way. So, when you do this, it’s the same as calling .iter_rows()
or .iter_cols()
, but it gets rid of the minimum or maximum parameters and goes through the entire dataset. All right!
04:54 So now, you know how to iterate through the data and it’s now time to see how you can pull this data into Python data structures to really open up the possibilities of what you can do with it.
Become a Member to join the conversation.