用python写的一个小程序,需求看 代码注释:
import xlrd
import xmltodict
import time
'''
需求:
读取excel里的数据,遍历每一行的第一列读取出来,写入到一个文件里面去。
例如:excel文件一共有100行,则把这一百行的每一行的第一列写入一人文件里(当然,也可以指定其他列,具体看个人怎么修改),
以时间为文件名称,会在指定的目录下生成100个文件。
'''
class ExcelData():
# 初始化方法
def __init__(self, data_path, sheetname):
#定义一个属性接收文件路径
self.data_path = data_path
# 定义一个属性接收工作表名称
self.sheetname = sheetname
# 使用xlrd模块打开excel表读取数据
self.data = xlrd.open_workbook(self.data_path)
# 根据工作表的名称获取工作表中的内容(方式①)
self.table = self.data.sheet_by_name(self.sheetname)
# 根据工作表的索引获取工作表的内容(方式②)
# self.table = self.data.sheet_by_name(0)
# 获取第一行所有内容,如果括号中1就是第二行,这点跟列表索引类似
self.keys = self.table.row_values(0)
# 获取工作表的有效行数
self.rowNum = self.table.nrows
# 获取工作表的有效列数
self.colNum = self.table.ncols
# 定义一个读取excel表的方法
def readExcel(self):
# 定义一个空列表
datas = []
print(self.rowNum)
for i in range(0, self.rowNum):
# 为了防止生成的文件比时间快,所以设计让其睡0.1秒
time.sleep(0.1)
# 取每一行的第一列的内容
c_cell = self.table.cell_value(i, 0)
# print('================================================')
# 解析取出来的报文
context = parseXml(c_cell)
# 报文内容以文件写出
exportFile(context)
# 返回从excel中获取到的数据:以列表存字典的形式返回
return datas
def parseXml(str):
print('--------------------------------------')
convertedDict = xmltodict.parse(str,encoding='utf-8')
con = convertedDict['ROOT']['BODY']
return con
# 导出为文件
def exportFile(context):
if len(context) != 0:
name = 'E:\\python_workspace\\files\\'+str(time.time()).replace('.','')+'.Rcv'
fh = open(name,'w',encoding='utf-8')
fh.write(context)
fh.close()
if __name__ == "__main__":
# excel的地址
data_path = "C:\\Users\\Administrator\\Desktop\\export_tty1.xls"
# sheet 名称
sheetname = "Sheet1"
get_data = ExcelData(data_path, sheetname)
datas = get_data.readExcel()
# print(datas)
# print('E:\\python_workspace\\files'+str(time.time()).replace('.','')+'.xml')