openpyxl:查找每列的最高行
我刚开始学习Python编程。我写了一个脚本,用来从一个API获取数据(使用的是Python 2.7.8),现在我想把这些数据添加到一个Excel表格里,那个表格里存放着我所有的数据。
在我的表格中,每一行代表一天,但有些数据可能要等到30天后才会出现,所以有些列的数据并没有填满到今天为止。简单来说,我的列的长度并不一样。
我想要读取每一列,找到那一列中最高的行数,然后把我的数据点添加到那一列的末尾。如果所有的列长度都一样,这个操作会很简单,但我不知道怎么单独找到每一列的长度。
我看过openpyxl的文档,但我对Python还不太熟悉,所以有些地方不太明白。我觉得解决方案可能会涉及到类似“对每一列,获取最高的行数”,然后我就可以把每个数据点添加到那一列。但我不太明白“对每一列”的部分该怎么做。找到每一列的长度也可以解决这个问题。
谢谢大家的帮助。
补充:我想到了一个变通的方法:我知道各列的相对长度,所以我从最后一行的数字中减去了这个长度:
last_row = ws.get_highest_row() + 1
col_num = 1
dataRow_length = len(dataRow)
row_offset = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 7, 14, 28, 1, 2, 3, 7, 14, 28]
for i in range(0, dataRow_length - 1):
ws.cell(row=(last_row - row_offset[col_num - 1]), column=col_num).value = dataRow[i]
col_num = col_num + 1
1 个回答
1
如果你逐行查看一个工作表的内容,你总是能找到每一行的长度。这应该能满足你的需求。如果还不够,请提供一些你的代码,这样我能更清楚地了解你想要做什么。