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
noneとNoneを出力します。これらは非表示の列/行ではありません。 Excelで表示すると、寸法がはっきりとわかります。
ブックにイテレータをロードするとディメンションディクショナリが作成されないことを知っていますが、その結果、主要なエラーが発生し、ここではイテレータを使用していません。
セル/行/列の幅/高さを決定する別の方法はありますか?
===============解決策=================
チャーリーのおかげで、すべての行の高さのリストを取得するには、次の方法が最良であることに気付きました。
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]
RowDimension
およびColumnDimension
オブジェクトは、デフォルトが上書きされる場合にのみ存在します。したがって、値が割り当てられるまで、ws.row_dimensions[1].height
は常にNone
になります。
デフォルト値は次のとおりです:{'defaultRowHeight': '15', 'baseColWidth': '10'}