用python修改excel表某一列内容的操作方法


Posted in Python onJune 11, 2021

想想你在一家公司里做表格,现在有一个下面这样的excel表摆在你面前,这是一个员工每个月工资的表,

用python修改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'])

用python修改excel表某一列内容的操作方法

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)

用python修改excel表某一列内容的操作方法

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)

用python修改excel表某一列内容的操作方法

接下来我们要将最前面的员工名称复制到后面,假设我们已经知道有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)

用python修改excel表某一列内容的操作方法

5 修改cell值

这时候我们只需要将只赋回cell即可:

tempi=0
for cell in table['B']:
    cell.value=IDList[tempi]
    tempi=tempi+1

这时候却发现如下报错:

用python修改excel表某一列内容的操作方法

这时因为我们有的格子是合并起来的

用python修改excel表某一列内容的操作方法

只需要将代码改成如下形式即可:

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 其他格式修正(居左为例)

假如你发现,此时存储结果编号局中了:

用python修改excel表某一列内容的操作方法

我想将其居左,只需将前面代码修改为:

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

效果:

用python修改excel表某一列内容的操作方法

以上就是用python修改excel表某一列内容的详细内容,更多关于python修改excel的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python通过索引遍历列表的方法
May 04 Python
在Python中操作日期和时间之gmtime()方法的使用
May 22 Python
python实现应用程序在右键菜单中添加打开方式功能
Jan 09 Python
python面向对象_详谈类的继承与方法的重载
Jun 07 Python
浅谈解除装饰器作用(python3新增)
Oct 15 Python
详解pandas删除缺失数据(pd.dropna()方法)
Jun 25 Python
Python实现变声器功能(萝莉音御姐音)
Dec 05 Python
Python和Sublime整合过程图示
Dec 25 Python
python 爬取马蜂窝景点翻页文字评论的实现
Jan 20 Python
Django 删除upload_to文件的步骤
Mar 30 Python
Python函数参数定义及传递方式解析
Jun 10 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
Jan 21 Python
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
你喜欢篮球吗?Python实现篮球游戏
教你使用TensorFlow2识别验证码
Jun 11 #Python
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
Python3中PyQt5简单实现文件打开及保存
Jun 10 #Python
Python selenium的这三种等待方式一定要会!
You might like
php函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
2020/05/27 PHP
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
escape、encodeURI 和 encodeURIComponent 的区别
2009/03/02 Javascript
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
js 如何实现对数据库的增删改查
2012/11/23 Javascript
JS中怎样判断undefined(比较不错的方法)
2014/03/27 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
2017/05/11 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
Python魔法方法功能与用法简介
2019/04/04 Python
使用selenium模拟登录解决滑块验证问题的实现
2019/05/10 Python
Python实现某论坛自动签到功能
2019/08/20 Python
python 字符串常用函数详解
2019/09/11 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
GNC健安喜美国官网:美国第一营养品牌
2016/07/22 全球购物
酒店公关部经理岗位职责
2013/11/24 职场文书
本科生职业生涯规划书范文
2014/01/21 职场文书
就业协议书怎么填
2014/04/11 职场文书
民主生活会剖析材料
2014/09/30 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
2014年班干部工作总结
2014/11/25 职场文书
给老婆的道歉信
2015/01/20 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书
有关保护环境的宣传标语100条
2019/08/07 职场文书
利用Python网络爬虫爬取各大音乐评论的代码
2021/04/13 Python
WIN10使用IIS部署ftp服务器详细教程
2022/08/05 Servers