用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 序列化 pickle/cPickle模块使用介绍
Nov 30 Python
python获取指定网页上所有超链接的方法
Apr 04 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
Jun 28 Python
Pandas读取并修改excel的示例代码
Feb 17 Python
在python中做正态性检验示例
Dec 09 Python
Python利用PyExecJS库执行JS函数的案例分析
Dec 18 Python
python爬虫模块URL管理器模块用法解析
Feb 03 Python
Pytorch对Himmelblau函数的优化详解
Feb 29 Python
Python threading.local代码实例及原理解析
Mar 16 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
Oct 14 Python
python实现自定义日志的具体方法
May 28 Python
Python实现Matplotlib,Seaborn动态数据图
May 06 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
Windows下XDebug 手工配置与使用说明
2010/07/11 PHP
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
PHP 验证登陆类分享
2015/03/13 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
JavaScript的9个陷阱及评点分析
2008/05/16 Javascript
JavaScript 事件查询综合
2009/07/13 Javascript
javascript拓展DOM操作 prependChild insertAfert
2010/11/17 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
js+jquery实现图片裁剪功能
2015/01/02 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
纯JS实现图片验证码功能并兼容IE6-8(推荐)
2017/04/19 Javascript
利用JavaScript如何查询某个值是否数组内
2017/07/30 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
ElementUI radio组件选中小改造
2019/08/12 Javascript
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
flask应用部署到服务器的方法
2019/07/12 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
python实现简单井字棋小游戏
2020/03/05 Python
CSS图片翻转动画技术详解(IE也实现了)
2014/04/03 HTML / CSS
英国最大的独立家具零售商:Furniture Village
2016/09/06 全球购物
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
高三生物教学反思
2014/01/25 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
2016年端午节红领巾广播稿
2015/12/18 职场文书
高质量“欢迎词”
2019/04/03 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs