读取 Excel 斜着读数据
import pandas as pd
def read_sideling(direction, sheet_name, row_start, col_start, gap):
"""
斜着读数据
:param sheet_name:
:param direction: left 往左下方读取 ↙,right 往右下方读取 ↘
:param row_idx: 行号,从0开始,
:param col_idx: 列号,从0开始
:return:
"""
# header=None 没有标题行
df = pd.read_excel("222.xlsx", sheet_name=sheet_name, header=None)
step = gap + 1
total = 0
continuous = 5 # 连续几连,算有效值
col_idx = col_start # 第一次,列号=传入的值
# 如果3行3行的比,再在上面套一层 for
for row_idx in range(row_start, step * continuous + 1, step): # range(1, 4) = 1~3 逗号右边是小于,所以 < 4 ,是 1~3,不包括4
if row_idx == 0 :
# 如果指定的行是从0开始,就跳过,否则不用跳过
continue # 跳过第1行
# print(row)
val = df.iloc[row_idx, col_idx] # 指定行,列
# TODO 判断 1
# if val != 1:
# print("第%s行,第%s列 => %s" % (row_idx + 1, col_idx, val))
# break # 三行数据,有一个不等于 1 就跳过
total = total + 1
# 列号位移
if direction == "right":
# 从右往左,列的序号 加 1
col_idx = col_idx + 1
if direction == "left":
# 从右往左,列的序号 减 1
col_idx = col_idx - 1
print("第%s行,第%s列 => %s" % (row_idx + 1, col_idx, val))
# 三行数据都 =1
if total == continuous:
# 'a' 追加到文件中, 'w' 以前的数据不要了,每次都重写
write_val = df.iloc[0, col_idx]
print("达到连续三个1,将值写文件%s" % write_val)
with open('output.txt', 'a', encoding='utf-8') as json_file:
json_file.write(str(write_val) + " ") # 把最上面的值写到文件中
else:
print("没达到三个1 不写文件")
# 斜着读数据,如果要和竖着的一起处理,就把方法复制到一个文件中
if __name__ == '__main__':
# ritht 向台
read_sideling(direction='right', sheet_name=0, row_start=1, col_start=1, gap=0)
# left 向左
read_sideling(direction='left', sheet_name=0, row_start=1, col_start=10, gap=0)
# left 向左
read_sideling(direction='left', sheet_name=0, row_start=1, col_start=14, gap=2)
标签:sheet,读取,idx,name,Excel,Pandas,start,col,row
From: https://www.cnblogs.com/vipsoft/p/17767839.html