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()

案例截图:

最新文章

  1. [转] js深拷贝和浅拷贝
  2. Java-生成指定长度验证码的一种简单思路
  3. .NET Framework源码查看及下载
  4. [转]C++模板学习
  5. ajax 中文乱码问题 主要是IE浏览器
  6. Android -- 自定义View小Demo,关于Path类的使用(一)
  7. Linux驱动设计——阻塞和同步
  8. poj 1094 Sorting It All Out (拓扑排序)
  9. Jquery ajax使用json形式通信
  10. Android Dev
  11. ural 1119 Metro
  12. mysql 5.7占用400M内存优化方案
  13. windows下安装NodeJs
  14. Automake创建项目
  15. UVALive 6885 Flowery Trails
  16. poj2352树状数组
  17. 验证码进阶(TensorFlow--基于卷积神经网络的验证码识别)
  18. jsp中添加过滤器,实现校验用户身份
  19. Python - 统计一篇文章中单词的频率
  20. SpringBoot2.0.2 Application调用的三种方式

热门文章

  1. Smarty的条件判断语句
  2. NIOS II SOPC系统自定义IP常见知识点总结
  3. auc的本质
  4. duilib入门简明教程 -- 完整的自绘标题栏(8)
  5. 使用原生javascript和jQuery解析json数据
  6. [HAOI2008] 排名系统
  7. for循环 | range 对象
  8. “全栈2019”Java第十章:关键字
  9. 【lojg152】 乘法逆元 2(数学)
  10. 修复已损坏的交换机IMG