此答案中建议的解决方案已被弃用,可能不再有效。
看一下 OpenPyXL ( IterableWorksheet ) 的源代码,我已经弄清楚了如何从迭代器工作表中获取列数和行数:
wb = load_workbook(path, use_iterators=True)
sheet = wb.worksheets[0]
row_count = sheet.get_highest_row() - 1
column_count = letter_to_index(sheet.get_highest_column()) + 1
IterableWorksheet.get_highest_column
返回一个字符串,其中包含您可以在 Excel 中看到的列字母,例如“A”、“B”、“C”等。因此我还编写了一个函数来将列字母转换为从零开始的索引:
def letter_to_index(letter):
"""Converts a column letter, e.g. "A", "B", "AA", "BC" etc. to a zero based
column index.
A becomes 0, B becomes 1, Z becomes 25, AA becomes 26 etc.
Args:
letter (str): The column index letter.
Returns:
The column index as an integer.
"""
letter = letter.upper()
result = 0
for index, char in enumerate(reversed(letter)):
# Get the ASCII number of the letter and subtract 64 so that A
# corresponds to 1.
num = ord(char) - 64
# Multiply the number with 26 to the power of `index` to get the correct
# value of the letter based on it's index in the string.
final_num = (26 ** index) * num
result += final_num
# Subtract 1 from the result to make it zero-based before returning.
return result - 1
虽然我还没有弄清楚如何获得列大小,所以我决定在我的应用程序中使用固定宽度的字体和自动缩放的列。