首页 文章

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

提问于
浏览
5

为什么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

打印无和无 . 这些不是隐藏的列/行 . 在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]

1 回答

  • 13

    仅当要覆盖默认值时,才存在 RowDimensionColumnDimension 对象 . 因此 ws.row_dimensions[1].height 将始终为 None ,直到为其分配值 .

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

相关问题