【Python】Excel数据处理
2024-10-21 06:45:10
1、环境准备
> python2.7
> xlrd,xlwt模块下载与安装,前者用来读取excel文件,后者用来写入excel文件
2、实战案例
案例场景:
> excel1中包含某个市所有客户名称(可能有重复的)
> excel2中包含某个省所有客户名称(无重复)、起始IP地址和终止IP地址
案例目的:
根据excel1中客户名称到excel2中取出对应IP地址范围,要求最终汇总到一个新的excel文件中,包含客户名称和IP地址范围,
IP地址范围格式要求:如起始和终止IP相等,则以/32结尾,否则以短线连接两个地址
案例脚本:
#coding:utf-8 import sys
import xlrd
import xlwt
import csv #存储客户名称
list=[] def readexcel():
file=sys.argv[1]
print file
workbook=xlrd.open_workbook(file)
sheet1=workbook.sheet_by_index(0)
col=0
while col<sheet1.ncols:
if '客户名称' in sheet1.cell(0,col).value.encode('utf-8'):
row=1
while row<sheet1.nrows:
tmp=sheet1.cell(row,col).value.encode('gbk')
#去掉重复行
if tmp not in list:
list.append(tmp)
row+=1
col+=1
write_excel(list) #匹配结果输出客户名称、处理后的地址
def write_excel(u_list):
file=sys.argv[2]
filename=sys.argv[1].replace('.xlsx','')+'_new.csv'
workbook=xlrd.open_workbook(file)
sheet1=workbook.sheet_by_index(0)
col=0
while col<sheet1.ncols:
if '用户名称' == sheet1.cell(0,col).value.encode('utf-8'):
row=1
while row<sheet1.nrows:
uname=sheet1.cell(row,col).value.encode('gbk')
for u in u_list:
if u == uname:
print uname+'\t'+sheet1.cell(row,0).value.encode('gbk')
with open(filename,'ab') as fw:
csv_file=csv.writer(fw,dialect='excel')
new_row=[uname,sheet1.cell(row,0).value.encode('gbk')]
csv_file.writerow(new_row)
row+=1
col+=1
if __name__=='__main__':
readexcel()
案例截图:
最新文章
- [转] js深拷贝和浅拷贝
- Java-生成指定长度验证码的一种简单思路
- .NET Framework源码查看及下载
- [转]C++模板学习
- ajax 中文乱码问题 主要是IE浏览器
- Android -- 自定义View小Demo,关于Path类的使用(一)
- Linux驱动设计——阻塞和同步
- poj 1094 Sorting It All Out (拓扑排序)
- Jquery ajax使用json形式通信
- Android Dev
- ural 1119 Metro
- mysql 5.7占用400M内存优化方案
- windows下安装NodeJs
- Automake创建项目
- UVALive 6885	Flowery Trails
- poj2352树状数组
- 验证码进阶(TensorFlow--基于卷积神经网络的验证码识别)
- jsp中添加过滤器,实现校验用户身份
- Python - 统计一篇文章中单词的频率
- SpringBoot2.0.2 Application调用的三种方式