今天在处理excel表格的时候,有一个需要提取表格中部分数据的操作。如果人工操作的话,有将近几千行,这样重复操作劳民伤财。
所以python就派上用场了。
简单介绍一下我要处理的问题,在excel一列有层级关系的数据,以xxx-xxx-xxx-xxx的格式展示,但是我需要的是提取最后一个符号之前的数据。
废话不多说,上代码。
# _*_ coding: utf-8 _*_ import sys import xlrd import xlwt test = xlrd.open_workbook(‘E:\demo.xlsx‘) # 获取新建一个test表格 sheet = test.sheet_names() # 获取sheet的名字 print(sheet) sheet_1 = test.sheet_by_index(0) # 获取第一个sheet,我的xxlsx只有一个sheet # 获取列数 myrows = sheet_1.nrows # 获取sheet_1的行数 print(myrows) font0 = xlwt.Font() # 16-19行代码都是在调整单元格的字体 font0.name = "Times New Roman" style = xlwt.XFStyle() style.font = font0 xlsx = xlwt.Workbook() # 新建一个xlx文件,这里有一个坑,xlwt建的是xls文件,如果你命名问xlsx后缀的话,会出现打开错误 sht = xlsx.add_sheet(‘sheet1‘) # 新建一个名为sheet1的sheet def handle(cell): str = ‘.‘ str1 = ‘-‘ l = cell[::-1] # 把字符串反向,详细参考https://www.cnblogs.com/jasmine0627/p/9510296.html l1 = l[l.index(str1):] # 字符串里面获取自定义字符前面的字符串,详细参考https://www.cnblogs.com/java-deft/p/9828399.html l2 = l1[::-1] l3 = l2[:-1] print(l3) return l3 cell1 = sheet_1.col_values(0, 1, 562) # 获取sheet_1中的1到562的数据, rows = len(cell1) # 获取cell1的长度 for i in range(rows): if isinstance(cell1[i], float): sht.write(i, 0, ‘‘, style) # 将符合此条件的数据放入相应的单元格中 else: sht.write(i, 0, handle(cell1[i]), style) # 将符合此条件的数据放入相应的单元格中 xlsx.save(‘E:\demo_1.xls‘) # 最后将处理后的数据保存到一张新的excel表中
代码有点粗糙,但是完成相应的操作,嘻嘻!
代码的质量还有待提高,慢慢来。
最后,人生苦短我用python!
原文地址:https://www.cnblogs.com/joiln/p/11623548.html
时间: 2024-10-03 22:55:50