用python修改excel表某一列内容的操作方法
作者:slandarer 发布时间:2022-01-22 20:51:29
标签:python,excel,内容
想想你在一家公司里做表格,现在有一个下面这样的excel表摆在你面前,这是一个员工每个月工资的表,
现在假设,你要做的事情,是填充好后面几个月每个员工的编号,并且给员工随机生成一个2000到50000之间的随机数作为该月的工资,能拿多少全靠天意,你为了锻炼自己的python能力决定写一个相关的代码:
1 库引入
首先要引入库函数,要修改excel内容首先需要有openpyxl这个库,要生成随机数就要有random这个库
import openpyxl
import random
2 提取cell
我们首先提取编号:
编号是第B列
workbook=openpyxl.load_workbook('工资.xlsx')
table = workbook['Sheet1']
print(table['B'])
3 提取List
但此时我们发现提取出的是cell格式的数据而不是我们常见的list格式,我们可以通过以下方式获得list格式:
def cell2List(CELL):
LIST=[]
for cell in CELL:
LIST.append(cell.value)
return LIST
IDList=cell2List(table['B'])
print(IDList)
4 修改List数据
接下来我们要找到 ‘工作编号' 这几个字的位置
def get_location_in_list(x, target):
step = -1
items = list()
for i in range(x.count(target)):
y = x[step + 1:].index(target)
step = step + y + 1
items.append(step)
return items
IDPos=get_location_in_list(IDList, '工作编号')
print(IDPos)
接下来我们要将最前面的员工名称复制到后面,假设我们已经知道有5个人,且知道小标题占两个格子(‘工作编号' 这几个字后面跟着' ')
那么编写如下代码:
staffNum=5
for i in range(0,len(IDPos)):
IDList[IDPos[i]+1:IDPos[i]+2+staffNum]=IDList[IDPos[0]+1:IDPos[0]+2+staffNum]
print(IDList)
5 修改cell值
这时候我们只需要将只赋回cell即可:
tempi=0
for cell in table['B']:
cell.value=IDList[tempi]
tempi=tempi+1
这时候却发现如下报错:
这时因为我们有的格子是合并起来的
只需要将代码改成如下形式即可:
tempi=0
for cell in table['B']:
try:
cell.value=IDList[tempi]
except:
print('')
tempi=tempi+1
6 存储回原EXCEL或新EXCEL
主要靠更改后面参数,例如我想新存一个result.xlsx
workbook.save(filename = "result.xlsx")
7 其他格式修正(居左为例)
假如你发现,此时存储结果编号局中了:
我想将其居左,只需将前面代码修改为:
tempi=0
for cell in table['B']:
try:
cell.value=IDList[tempi]
cell.alignment = openpyxl.styles.Alignment(horizontal='left', vertical='center')
except:
print('')
tempi=tempi+1
8 随机生成工资
与前面类似,较为简单,建议看完整代码自己领悟嗷
9 完整代码
import openpyxl
import random
def cell2List(CELL):
LIST=[]
for cell in CELL:
LIST.append(cell.value)
return LIST
def get_location_in_list(x, target):
step = -1
items = list()
for i in range(x.count(target)):
y = x[step + 1:].index(target)
step = step + y + 1
items.append(step)
return items
workbook=openpyxl.load_workbook('工资.xlsx')
table = workbook['Sheet1']
IDList=cell2List(table['B'])
salaryList=cell2List(table['C'])
IDPos=get_location_in_list(IDList, '工作编号')
staffNum=5
for i in range(0,len(IDPos)):
IDList[IDPos[i]+1:IDPos[i]+2+staffNum]=IDList[IDPos[0]+1:IDPos[0]+2+staffNum]
for j in range(IDPos[i]+1,IDPos[i]+2+staffNum):
salaryList[j]=1
# tempi=0
# for cell in table['B']:
# cell.value=IDList[tempi]
# tempi=tempi+1
tempi=0
for cell in table['B']:
try:
cell.value=IDList[tempi]
cell.alignment = openpyxl.styles.Alignment(horizontal='left', vertical='center')
except:
print('')
tempi=tempi+1
tempi=0
for cell in table['C']:
try:
if salaryList[tempi]==1:
cell.value=random.randint(2000,50000)
except:
print('')
tempi=tempi+1
workbook.save(filename = "result.xlsx")
效果:
来源:https://blog.csdn.net/slandarer/article/details/117777396


猜你喜欢
- 函数先定义函数,后调用一、定义函数:1、简单的规则:函数代码块以 def 关键词开头,后接函数标识符名称和圆括号&nbs
- 目录1. DeepSource2. Codacy3. SonarQube4. Veracode5. Checkmarx6. Coverity
- 优点:兼容性很好,而且俺觉得不应该有什么拦截工具可以拦截下来优点:代码非常短缺点:必须在页面点击后才会弹出demo:运行代码框<hea
- 在SQL SERVER中如何通过SQL语句获取服务器硬件和系统信息呢?下面介绍一下如何通过SQL语句获取处理器(CPU)、内存(Memory
- 一个小问题今天在做一个实验时,需要对一个包含中英文词汇的TXT文件进行读入和整理。Python代码的编码规则为UTF-8。在读入时,文件的每
- 字体的处理在网页设计中无论怎么强调也不为过,毕竟网页使用来传递信息的,而最经典最直接的信息传递方式就是
- 先来聊一聊Top K算法,具体内容如下应用场景: 搜索引
- 一、 Scott用户下的表结构SCOTT。是在Oracle数据库中,一个示例用户的名称。其作用是为初学者提供一些简单的应用示例,不过其默认是
- 本文实例讲述了PHP排序算法之冒泡排序(Bubble Sort)实现方法。分享给大家供大家参考,具体如下:基本思想:冒泡排序是一种交换排序,
- 最近在学习Python的时候遇到一个知识点,在此记录下来可变参数会自动填充前面的同名默认参数比如下面这个函数def add_student(
- 成果库修改: 要求主题列表随成果类型改变而改变  
- 本文实例讲述了python安装cx_Oracle模块常见问题与解决方法。分享给大家供大家参考,具体如下:安装或使用cx_Oracle时,需要
- 生成静态页的页面非常的简单就是定义好模板与模板标题,之后利用str_replace进行替换了,是最常用的方法,另一种是利用ob_get_co
- 一、背景故事圣诞节风波马上不就到圣诞节了嘛,我看到朋友圈里很多小伙伴再纷纷炫耀自己收到的专属圣诞树,也有小伙伴私信我,说还没有自己的圣诞树!
- 这段时间有个朋友想导出微信里面的账单信息,后来发现微信的反爬虫还是很厉害的,花了点时间去分析。一、采用传统模拟http抓取抓取的主要URL:
- 本文详细讲述了MYSQL日志的正确删除方法。分享给大家供大家参考,具体如下:1.查找:MySQL> show binary logs;
- 我很想自己写一个这样的程序,不过wordpress是php的,我blog是ASP的,只好用ASP写代码了。经过一番折腾测试,终于让我的梦想变
- 今天要做个搜索,用到了时间比较函数!以前多是直接比较时间,查询语句有长效率又不高~~~后来用了DateDiff函数,在调试的时候发现了一些问
- 每次讲解SQL Server里的锁和阻塞(Locking & Blocking)都会碰到的问题:在SQL Server里,为什么我们
- 在了解装饰器的之前一定要先了解函数作为参数传递, 什么是函数内嵌,请参考我之前写的博客函数简介因为在python里面,函数也是对象,也可以作