用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中使用sys模板和logging模块获取行号和函数名的方法
Apr 15 Python
Python多进程multiprocessing用法实例分析
Aug 18 Python
python中的set实现不重复的排序原理
Jan 24 Python
python实现数独游戏 java简单实现数独游戏
Mar 30 Python
mac下pycharm设置python版本的图文教程
Jun 13 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
Jul 19 Python
通过python检测字符串的字母
Feb 18 Python
Python2 与Python3的版本区别实例分析
Mar 30 Python
matplotlib基础绘图命令之bar的使用方法
Aug 13 Python
python实现暗通道去雾算法的示例
Sep 27 Python
python实现自动打卡的示例代码
Oct 10 Python
python空元组在all中返回结果详解
Dec 15 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 获取全局变量的代码
2011/04/21 PHP
php生成缩略图示例代码分享(使用gd库实现)
2014/01/20 PHP
PHP字符串的递增和递减示例介绍
2014/02/11 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
功能强大的php文件上传类
2016/08/29 PHP
JavaScript For Beginners(转载)
2007/01/05 Javascript
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
jQuery开源组件BootstrapValidator使用详解
2017/06/29 jQuery
node+express+ejs使用模版引擎做的一个示例demo
2017/09/18 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
手把手教你如何编译打包video.js
2020/12/09 Javascript
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
Python多线程学习资料
2012/12/19 Python
python模拟表单提交登录图书馆
2018/04/27 Python
Python Flask 搭建微信小程序后台详解
2019/05/06 Python
8种用Python实现线性回归的方法对比详解
2019/07/10 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
Python有参函数使用代码实例
2020/01/06 Python
浅谈python锁与死锁问题
2020/08/14 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
请写出一段Python代码实现删除一个list里面的重复元素
2015/12/29 面试题
2014学习全国两会精神心得体会2000字
2014/03/11 职场文书
yy婚礼司仪主持词
2014/03/14 职场文书
物业管理工作方案
2014/05/10 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
2014年群众路线党员自我评议
2014/09/24 职场文书
中标通知书
2015/04/17 职场文书
Python中的变量与常量
2021/11/11 Python