用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中变量赋值的问题
Jan 12 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
Jul 18 Python
如何安装多版本python python2和python3共存以及pip共存
Sep 18 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
Dec 18 Python
django框架使用orm实现批量更新数据的方法
Jun 21 Python
详解Python 中sys.stdin.readline()的用法
Sep 12 Python
Python新手学习函数默认参数设置
Jun 03 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
Jun 23 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
Nov 28 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
Nov 30 Python
python 逐步回归算法
Apr 06 Python
Python中OpenCV实现查找轮廓的实例
Jun 08 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中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
php操作MongoDB类实例
2015/06/17 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
解决eclipse中没有js代码提示的问题
2018/10/10 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
pandas DataFrame索引行列的实现
2019/06/04 Python
Python 如何提高元组的可读性
2019/08/26 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
北美领先的牛仔品牌:Buffalo David Bitton
2017/05/22 全球购物
美国折扣网站:jClub
2017/08/07 全球购物
西班牙手机之家:Phone House
2018/10/18 全球购物
DELPHI面试题研发笔试试卷
2015/11/08 面试题
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
面试后的感谢信范文
2014/02/01 职场文书
《掌声》教学反思
2014/02/23 职场文书
学雷锋标语
2014/06/25 职场文书
2014年“四风”问题个人整改措施
2014/09/17 职场文书
2014年工人工作总结
2014/11/25 职场文书
2015初一年级组工作总结
2015/07/24 职场文书
pytorch MSELoss计算平均的实现方法
2021/05/12 Python
python_tkinter事件类型详情
2022/03/20 Python