如何测试报表转换后的字段是否丢失?
需求: CSV表格 内容进行提取,然后做其他处理,开发在提取过程中由于表格变更或其他原因,有部分项目条目丢失,因此需要比对子段 。 但是一条一条过,有点考验耐心,花了半天时间,写了个小程序完成。
源表和目标表格如下,要比对的内容是转换后表格中每项内容是否都存在:
源表.png 目标表.png
代码如下:
#-*- coding:utf-8 -*-
import xlrd
import sys
def get_exceldata(fileDir):
workbook = xlrd.open_workbook(fileDir)
table = workbook.sheets()[0]
# 获取行列
nrows = table.nrows
ncols = table.ncols
#sheet2 = workbook.sheet_by_index(0) # sheet索引从0开始
# print(nrows, ncols)
for i in range(nrows): # 循环逐行打印
# 获取第一列数据
excel_datas = table.cell_value(i, 0)
return excel_datas
def check_translateData():
#get Excel data
#fileDir = "E:\\test-tmp\\Excel\\2017年4月中化石油有限公司利润表.xlsx"
fileDir = sys.argv[1] # 获取生成后的Excel表
#print (fileDir)
excel_data = get_exceldata(fileDir)
#get src file data
#srcfile = 'E:\\test-tmp\\Excel\\1.txt'
srcfile = sys.argv[2] #获取源表
with open(srcfile,encoding='utf-8',errors='ignore' ) as f:
file_data = f.readlines()
for title in file_data:
if len(title)>1: #空行len(title) ==1, 过滤空行
if excel_data.find( title.split()[0]):
print ("find ",title.split()[0].lstrip())
pass
else:
print ("Can't find ",title.split()[0].lstrip())
return -1
def main():
#src_cvs()
print("开始运行!")
#print (len(sys.argv))
if len (sys.argv) < 3:
argv_msg = "缺少参数,请依次输入转换后表格和SAP源表格,执行命令示例如下:"
example_msg = 'python3 excel_check.py 转换后表格文件 源表格文件'
print(argv_msg)
print (example_msg)
return -1
else:
check_translateData()
if __name__ == "__main__":
main()
运行结果,即因此查找src中的每个字段是否在Excel中存在。
遇到的问题:
1、python带参数运行
2、Excel表格处理
3、TXT文件处理
文件打开要用utf-8格式
with open(srcfile,encoding='utf-8',errors='ignore' ) as f:
4、低内聚高耦合??
其他没用到的代码:
def src_txt():
with open('E:\\test-tmp\\Excel\\1.txt',encoding='utf-8',errors='ignore' ) as f:
reader = f.readlines()
for title in reader:
if len(title)>1:
#print(len(title))
print (title.split()[0])
def src_cvs():
with open('E:\\test-tmp\\Excel\\1.XLS', encoding='utf-8', errors='ignore') as f:
reader = csv.reader(f)
rows = [row for row in reader]
print(rows)
pass
网友评论