前言
本片介绍从SAP TableControl中读取数据的方法,方便于其功能的实现。
代码实现
class SapGuiTableControl:
"""
读取GuiTableControl对象的数据。
"""
@staticmethod
def get_data(session, _id, columns=None):
"""
获取指定列的数据,索引从0开始。
:param session: SAP的GuiSession对象。
:param _id: SAP组件ID。
:param columns: 需要获取数据的列索引。
"""
result = []
tbl = session.findById(_id)
# 如果没有指定要读取的列,则读取全部列
columns = columns or [i for i in range(tbl.Columns.Count)]
row_number = 0
page = 0
old_position = -1
new_position = 0
# 滚动到下页的位置没有变更,则表示到达最后一页
while old_position != new_position:
rows_per_page = tbl.Children.Count // tbl.Columns.Count
page += 1
# 读取一页的数据
for row in range(rows_per_page):
row_data = [tbl.GetCell(row, column_number).Text for column_number in columns]
result.append(row_data)
# print("Page:", page, "PageSize:", str(row + 1) + '/' + str(rows_per_page), row_data)
row_number += rows_per_page
# 滚动到下页的位置
next_page_position = tbl.VerticalScrollbar.Position + tbl.VisibleRowCount
old_position = tbl.verticalScrollbar.position
tbl.verticalScrollbar.position = next_page_position
# 获取翻页后的表格控件对象
tbl = session.findById(_id)
new_position = tbl.verticalScrollbar.position
return result
总结
在实现TableControl数据读取时,通过修改滚动条的当前来实现翻页。
如果滚动条的当前不再更新,则表明已经读取到最后一页。
仅供参考,如有帮助不胜荣幸,如需转载请注明出处。
请关注、点赞、收藏。