码迷,mamicode.com
首页 > 编程语言 > 详细

Python-工具-批量替换EXCLE文件中某列的值

时间:2019-10-05 10:52:47      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:utils   row   替换   原来   work   批量替换   new   ble   结果   

    由于工作的原因,经常需要查询统计各地数据,有时结果收集上来后发现需要对其中某些列的数据进行转换,例如将代码值转成中文含义。

    重新统计需要花费时间和运维精力,所以自己写了一个简单的替换脚本。当然,理想状态还是在查询统计前就把要求确认。

    下面的代码复制到.py文件中,安装完成Python后,安装必要的包(xlrd、xlutils)就可以使用了。注意的是,需要替换的所有文件需和脚本文件同一目录。

    (脚本只能处理xls扩展名的文件,因为对xlsx处理可用的Python包没找到,但是xlsx的可以批量替换扩展名再进行处理,批量替换扩展名一行命令就搞定,不会的可以Bing一下)

from xlutils.copy import copy
import xlrd
import os
import sys

print("要替换的文件需与脚本同一目录")
a = input("输入替换前的内容 \n")
b = input("输入替换后的内容 \n")
c = input("输入替换是第几列 \n")
c = int(c) - 1

#当前路径 print(sys.path[0])
for files in os.walk(sys.path[0]):
for file in files[2]:
#print(file[-3:])
if(file[-3:] == xls):
#1、打一要修改的excel
#2、再打开另一个excel
#3、把第一个excel里面修改东西写到第二个里头
#4、把原来的excel删掉,新的excel名改成原来的名字
book = xlrd.open_workbook(file)
table1 = book.sheets()[0]
nr = table1.nrows
nc = table1.ncols
num = 0
#复制一个excel
new_book = copy(book)
#通过获取到新的excel里面的sheet页
sheet = new_book.get_sheet(0)
for i in range(0,nr):
#print(str(table1.cell(i,c).value))
if(str(table1.cell(i,c).value) == a):
#写入excel,第一个值是行,第二个值是列
sheet.write(i, c, b)
num = num + 1
#保存新的excel,保存excel必须使用后缀名是.xls的,不是能是.xlsx的
new_book.save(2.xls)
#删除原有
os.remove(file)
#将新文件重命名原有文件
os.rename(2.xls,file)
print(file + " 替换完成 共替换"+ str(num) + "")

ex = input("是否退出,Y or N ? \n")
if(ex == Y):
exit()

 

 

 

Python-工具-批量替换EXCLE文件中某列的值

标签:utils   row   替换   原来   work   批量替换   new   ble   结果   

原文地址:https://www.cnblogs.com/yangjn/p/11623962.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!