用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
0
投稿
猜你喜欢
- 在matlab中,存在执行直接得函数来添加高斯噪声和椒盐噪声。Python-OpenCV中虽然不存在直接得函数,但是很容易使用相关的函数来实
- 一、安装mongo plugs插件File->SettingPlugins查询Mongo选择Search in repositorie
- # 递归满足的条件# 1.自己调用自己# 2.必须有一个明确的结束条件# 优点:逻辑简单\定义简单# 缺点:防止内存消耗过多,容易导致栈溢出
- 1、简单的按钮js事件 用于判断和显示提示 <script type="text/javascript&
- ccs的优点:css相对xpath语法比xpath简洁,定位速度比xpath快css的缺点:css不支持用逻辑运算符来定位,而xpath支持
- 有时候我们会在页面上显示用户的所在地区,这个原理是:先得到用户的IP,然后去查询将IP转换成一个数值,最后去查这个数值所在的范围,来得到用户
- 每个人都可以编写CSS代码,甚至你现在已经让它为你的项目工作了。但是CSS还可以更好吗?开始用这5个Tips改进你的CSS吧!一、关于CSS
- 一.权限表mysql数据库中的3个权限表:user 、db、 host权限表的存取过程是:1)先从user表中的host、 user、 pa
- 最近在研究品牌如何演绎,当然,看的时候没有忘记本行,分析了一下他们的交互设计~~路易威登LV上图采用胶片展示多组信息——大片展示品牌渲染。利
- 最近用layer ui上传文件遇到了一个问题,我想在上传文件之前把data-id传入后台,layer文档找了一下也没有找到类似的说明,经过一
- 在上一篇关于绘画Sankey桑葚图的文章里,已经介绍过大致的过程,本文主要解决如何自定义/修改 所想要的颜色, 如下所示一个桑葚图:想要修改
- 导语表妹心疼我,为了逗我开心,教我用Python制作会跳舞的美女。作为新时代的活雷锋,在这里分享给大家。开发工具Python版本:3.6.4
- 本文研究的主要是Python内建模块struct的相关内容,具体如下。Python中变量的类型只有列表、元祖、字典、集合等高级抽象类型,并没
- 简介到目前为止,我们查阅anaconda的官网可发现,由于目前Anaconda没有支持arm架构的版本,在M1芯片Mac上安装的Anacon
- lambda/filter/map/reduce这几个函数面试中很肯定会用到,本篇主要介绍这几个函数的用法。1 lambda匿名函数,用法如
- 偶然看到 Tanel Poder 提到的一个 Metalink Note (438452.1): Performance Tools Qui
- Python 安装Graphviz 详细教程Python安装Graphviz画图器首先,要明确他是一个独立的软件,如果大家用pip的方法装了
- 小编语:小编我最早使用的网页制作工作就是FrontPage啦,FrongPage方便简单,会用Word就能做网页。如果你对网页制作要求不高,
- 新下载了一个Pycharm,建了个小demo,期间产生了一个sqlite3文件,由于是第一次打开,就弹出选择打开方式的对话框,手一块直接点了
- 1. 在Python中使用中文在Python中有两种默认的字符串:str和