当前位置:嗨网首页>书籍在线阅读

07-从表中取得单元格

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

13.3.3 从表中取得单元格

有了 Worksheet 对象后,就可以按名字访问 Cell 对象。在交互式环境中输入以下代码:

>>> import openpyxl
>>> wb = openpyxl.load_workbook('example.xlsx')
>>> sheet = wb['Sheet1'] # Get  a sheet from the workbook.
>>> sheet['A1'] # Get a cell from the sheet.
<Cell 'Sheet1'.A1>
>>> sheet['A1'].value # Get the value from the cell.
datetime.datetime(2015, 4, 5, 13, 34, 2)
>>> c = sheet['B1'] # Get another cell from the sheet.
>>>  c.value
'Apples'
>>> # Get the row, column, and value from the cell.
>>> 'Row %s, Column %s is %s' % (c.row, c.column, c.value)
'Row 1, Column B is Apples'
>>> 'Cell %s is %s' % (c.coordinate, c.value)
'Cell B1 is Apples'
>>> sheet['C1'].value
73

Cell 对象有一个 value 属性,它包含这个单元格中保存的值。 Cell 对象也有 rowcolumncoordinate 属性,可以提供该单元格的位置信息。

这里,访问单元格B1的 Cell 对象的 value 属性,我们得到字符串 'Apples'row 属性给出的是整数1, column 属性给出的是 'B'coordinate 属性给出的是 'B1'

openpyxl 将自动解释列A中的日期,将它们返回为 datetime 值,而不是字符串。 datetime 数据类型将在第17章中进一步解释。

用字母来指定列,这在程序中可能有点儿奇怪,特别是在Z列之后,列开始使用两个字母:AA、AB、AC等表示。作为替代,在调用表的 cell() 方法时,传入整数作为该方法的 rowcolumn 关键字参数,这样也可以得到一个单元格。第一行或第一列的整数是1,不是0。输入以下代码,继续演示交互式环境的例子:

>>> sheet.cell(row=1, column=2)
<Cell 'Sheet1'.B1>
>>> sheet.cell(row=1, column=2).value
'Apples'
>>> for i in range(1, 8, 2): # Go through every other row:
... print(i, sheet.cell(row=i, column=2).value)
...
1 Apples
3  Pears
5 Apples
7  Strawberries

可以看到,使用表的 cell() 方法,并传入 row=1column=2 ,将得到单元格B1的 Cell 对象,就像指定 sheet['B1'] 一样。然后,利用 cell() 方法和它的关键字参数,就可以编写 for 循环以输出一系列单元格的值。

假定你想顺着B列输出所有奇数行单元格的值。通过传入2作为 range() 函数的“步长”参数,可以取得每隔一行的单元格(在这里就是所有奇数行)。 for 循环的 i 变量被传递作为 cell() 方法的 row 关键字参数,而 column 关键字参数总是取2。请注意传入的是整数2,而不是字符串 'B'

可以通过 Worksheet 对象的 max_rowmax_column 属性来确定表的大小。在交互式环境中输入以下代码:

>>> import openpyxl
>>> wb = openpyxl.load_workbook('example.xlsx')
>>> sheet = wb['Sheet1']
>>> sheet.max_row # Get the highest row number. 
7
>>> sheet.max_column # Get the highest column number. 
3

请注意, max_column 属性是一个整数,而不是Excel中出现的字母。