用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实现树莓派WiFi断线自动重连的实例代码
Mar 16 Python
DataFrame中的object转换成float的方法
Apr 10 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
May 04 Python
利用Python如何将数据写到CSV文件中
Jun 05 Python
Mac安装python3的方法步骤
Aug 09 Python
python实现ip地址查询经纬度定位详解
Aug 30 Python
python中for循环变量作用域及用法详解
Nov 05 Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 Python
Python实现给PDF添加水印的方法
Jan 25 Python
Pygame Rect区域位置的使用(图文)
Nov 17 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
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
php中session过期时间设置及session回收机制介绍
2014/05/05 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
2017/04/20 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
JavaScript禁止页面操作的示例代码
2013/12/17 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
javascript倒计时效果实现
2015/11/12 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
2016/06/08 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
使用puppeteer破解极验的滑动验证码
2018/02/24 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
[01:07]DOTA2次级职业联赛 - Fpb战队宣传片
2014/12/01 DOTA
Python 基础教程之str和repr的详解
2017/08/20 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
python 画条形图(柱状图)实例
2020/04/24 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
CNC数控操作工岗位职责
2013/11/19 职场文书
心理健康教育心得体会
2013/12/29 职场文书
态度决定一切演讲稿
2014/05/20 职场文书
学习焦裕禄观后感
2015/06/09 职场文书
自信主题班会
2015/08/14 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
nginx配置之并发频次限制
2022/04/18 Servers