[Python] 利用python的第三方库xlrd和xlwt来处理excel数据

今天在处理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!

posted @ 2019-10-04 22:32  仔仔的棒棒糖  阅读(477)  评论(0编辑  收藏  举报