OpenPyXL中的列和行维度始终为None

Tom*_*Tom 9 python python-2.7 openpyxl

为什么openpyxl将每行和列维读取为None?无论表是通过openpyxl还是在Microsoft Excel中创建,都是如此.

import openpyxl
wb = openpyxl.load_workbook(r'C:\data\MyTable.xlsx')
ws = wb.active
print ws.row_dimensions[1].height
print ws.column_dimensions['A'].width
Run Code Online (Sandbox Code Playgroud)

打印无和无.这些不是隐藏的列/行.在Excel中查看时,它们显然具有尺寸.

我知道用迭代器加载工作簿将阻止创建维度字典,但这会导致键错误,我在这里不使用迭代器.

是否有另一种方法来确定单元格/行/列的宽度/高度?

===============解决方案=================

感谢Charlie,我意识到以下是获得所有行高的列表的最佳方法:

import openpyxl
wb = openpyxl.load_workbook(r'C:\Data\Test.xlsx')
ws = wb.active
rowHeights = [ws.row_dimensions[i+1].height for i in range(ws.max_row)]
rowHeights = [15 if rh is None else rh for rh in rowHeights]
Run Code Online (Sandbox Code Playgroud)

Cha*_*ark 16

RowDimensionColumnDimension只有在要覆盖默认值时才存在对象和对象.所以ws.row_dimensions[1].height总是会None被分配一个值.

默认值为: {'defaultRowHeight': '15', 'baseColWidth': '10'}

  • 如果文档明确说明您在答案中所说的内容,它会帮助我:有默认值,但除非维度已更改,否则返回None而不是默认值. (3认同)