用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实现删除Android工程中的冗余字符串
Jan 19 Python
python的random模块及加权随机算法的python实现方法
Jan 04 Python
Python之Scrapy爬虫框架安装及简单使用详解
Dec 22 Python
使用python和Django完成博客数据库的迁移方法
Jan 05 Python
Flask解决跨域的问题示例代码
Feb 12 Python
Python实现查找数组中任意第k大的数字算法示例
Jan 23 Python
10 分钟快速入门 Python3的教程
Jan 29 Python
python的set处理二维数组转一维数组的方法示例
May 31 Python
使用selenium和pyquery爬取京东商品列表过程解析
Aug 15 Python
python中的subprocess.Popen()使用详解
Dec 25 Python
解决Python import docx出错DLL load failed的问题
Feb 13 Python
python中altair可视化库实例用法
Jan 26 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
域名查询代码公布
2006/10/09 PHP
求PHP数组最大值,最小值的代码
2011/10/31 PHP
php上传文件中文文件名乱码的解决方法
2013/11/01 PHP
php实现微信发红包
2015/12/05 PHP
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
用jQuery简化JavaScript开发分析
2009/02/19 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
jquery 实现回车登录详解及实例代码
2016/10/23 Javascript
jQuery实现的购物车物品数量加减功能代码
2016/11/16 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
2017/04/28 Javascript
vue-router懒加载速度缓慢问题及解决方法
2018/11/25 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
深入讲解Python编程中的字符串
2015/10/14 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
Python处理XML格式数据的方法详解
2017/03/21 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
django创建简单的页面响应实例教程
2019/09/06 Python
如何在Windows中安装多个python解释器
2020/06/16 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
预订全球最佳旅行体验:Viator
2018/03/30 全球购物
应届生的求职推荐信范文
2013/11/30 职场文书
物流专员岗位职责
2014/02/17 职场文书
主题教育活动总结
2014/05/05 职场文书
六查六看心得体会
2014/10/14 职场文书
幸福来敲门观后感
2015/06/04 职场文书
2019年教师节祝福语精选,给老师送上真诚的祝福
2019/09/09 职场文书
基于redis+lua进行限流的方法
2022/07/23 Redis