⽤python修改excel表某⼀列内容的操作⽅法
想想你在⼀家公司⾥做表格,现在有⼀个下⾯这样的excel表摆在你⾯前,这是⼀个员⼯每个⽉⼯资的表,
现在假设,你要做的事情,是填充好后⾯⼏个⽉每个员⼯的编号,并且给员⼯随机⽣成⼀个2000到50000之间的随机数作为该⽉的⼯资,能拿多少全靠天意,你为了锻炼⾃⼰的python能⼒决定写⼀个相关的代码:
python怎么读取excel某一列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 unt(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 unt(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")
效果:
以上就是⽤python修改excel表某⼀列内容的详细内容,更多关于python修改excel的资料请关注其它相关⽂章!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论