用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网络编程学习笔记(五):socket的一些补充
Jun 09 Python
Python的迭代器和生成器使用实例
Jan 14 Python
python下载图片实现方法(超简单)
Jul 21 Python
基于使用paramiko执行远程linux主机命令(详解)
Oct 16 Python
Python数据结构与算法之列表(链表,linked list)简单实现
Oct 30 Python
python利用高阶函数实现剪枝函数
Mar 20 Python
Python简单爬虫导出CSV文件的实例讲解
Jul 06 Python
python爬取微信公众号文章的方法
Feb 26 Python
Python全栈之列表数据类型详解
Oct 01 Python
python 并发下载器实现方法示例
Nov 22 Python
Python 如何批量更新已安装的库
May 26 Python
Python基础之Socket通信原理
Apr 22 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代码
2008/09/10 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
2010/02/22 PHP
PHP+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
浅析PHP递归函数返回值使用方法
2013/02/18 PHP
php生成mysql的数据字典
2016/07/07 PHP
php阳历转农历优化版
2016/08/08 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
PHP配置ZendOpcache插件加速
2019/02/14 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
2013/07/09 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
JavaScript实现的超简单计算器功能示例
2017/12/23 Javascript
快速解决vue-cli不能初始化webpack模板的问题
2018/03/20 Javascript
vue框架下部署上线后刷新报404问题的解决方案(推荐)
2019/04/03 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
Windows下使Python2.x版本的解释器与3.x共存的方法
2015/10/25 Python
Python实现字符串匹配算法代码示例
2017/12/05 Python
Django 视图层(view)的使用
2018/11/09 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
Django接收自定义http header过程详解
2019/08/23 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
2020/01/13 Python
python实现定时发送邮件
2020/12/23 Python
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
可可西里观后感
2015/06/08 职场文书
Python 实现Mac 屏幕截图详解
2021/10/05 Python
Python读取和写入Excel数据
2022/04/20 Python