用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 getopt 参数处理小示例
Jun 09 Python
使用Node.js和Socket.IO扩展Django的实时处理功能
Apr 20 Python
星球大战与Python之间的那些事
Jan 07 Python
教你使用python实现微信每天给女朋友说晚安
Mar 23 Python
python创建文件备份的脚本
Sep 11 Python
Python3中关于cookie的创建与保存
Oct 21 Python
python使用udp实现聊天器功能
Dec 10 Python
详解python实现交叉验证法与留出法
Jul 11 Python
python正则爬取某段子网站前20页段子(request库)过程解析
Aug 10 Python
Django配置MySQL数据库的完整步骤
Sep 07 Python
基于Python3读写INI配置文件过程解析
Jul 23 Python
Python PIL按比例裁剪图片
May 11 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控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
PHP 面向对象详解
2012/09/13 PHP
关于PHP实现异步操作的研究
2013/02/03 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
Laravel源码解析之路由的使用和示例详解
2018/09/27 PHP
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
function foo的原型与prototype属性解惑
2010/11/19 Javascript
jQuery is()函数用法3例
2014/05/06 Javascript
Jquery焦点图实例代码
2014/11/25 Javascript
Js和JQuery获取鼠标指针坐标的实现代码分享
2015/05/25 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
AngularJS表达式讲解及示例代码
2016/08/16 Javascript
微信小程序 toast 详解及实例代码
2016/11/09 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
使用vue.js实现联动效果的示例代码
2017/01/10 Javascript
Vuex之理解state的用法实例
2017/04/19 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
2017/07/07 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
pyspark 读取csv文件创建DataFrame的两种方法
2018/06/07 Python
详解flask入门模板引擎
2018/07/18 Python
python爬取指定微信公众号文章
2018/12/20 Python
python selenium firefox使用详解
2019/02/26 Python
用Python实现校园通知更新提醒功能
2019/11/23 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
经典c++面试题四
2015/05/14 面试题
中英双版中文教师求职信
2013/10/27 职场文书
企划专员岗位职责
2013/12/09 职场文书
竞选班长演讲稿500字
2014/08/22 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
使用Nginx+Tomcat实现负载均衡的全过程
2022/05/30 Servers