用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实例及解析
Nov 19 Python
PyCharm配置mongo插件的方法
Nov 30 Python
python把1变成01的步骤总结
Feb 27 Python
Python画图实现同一结点多个柱状图的示例
Jul 07 Python
Django的CVB实例详解
Feb 10 Python
python3.6使用SMTP协议发送邮件
May 20 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
python 爬虫如何正确的使用cookie
Oct 27 Python
Python try except else使用详解
Jan 12 Python
字典算法实现及操作 --python(实用)
Mar 31 Python
安装pytorch时报sslerror错误的解决方案
May 17 Python
Elasticsearch 索引操作和增删改查
Apr 19 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
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
PHP 数组入门教程小结
2009/05/20 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
CI框架学习笔记(二) -入口文件index.php
2014/10/27 PHP
比Jquery的document.ready更快的方法
2010/04/28 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
2013/11/03 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
推荐10 个很棒的 jQuery 特效代码
2015/10/04 Javascript
图解Sublime Text3使用技巧
2015/12/21 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
JS中动态创建元素的三种方法总结(推荐)
2016/10/20 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
2017/08/16 Javascript
小程序页面动态配置实现方法
2019/02/05 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
如何用itertools解决无序排列组合的问题
2017/05/18 Python
Python实现FTP文件传输的实例
2019/07/07 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
解决Mac下使用python的坑
2019/08/13 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
2020/03/18 Python
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
Aeropostale官网:美国著名校园品牌及青少年服饰品牌
2019/03/21 全球购物
大一期末自我鉴定
2013/12/13 职场文书
信用卡工资证明范本
2014/10/17 职场文书
2015年个人剖析材料范文
2014/12/29 职场文书
教师节晚会主持词
2015/06/30 职场文书
推普标语口号大全
2015/12/26 职场文书