用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新手编程过程中如何规避一些常见问题的建议
Apr 01 Python
python中字典dict常用操作方法实例总结
Apr 04 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
Jul 13 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
Aug 24 Python
python的文件操作方法汇总
Nov 10 Python
将Django项目部署到CentOs服务器中
Oct 18 Python
Python地图绘制实操详解
Mar 04 Python
Python3内置模块pprint让打印比print更美观详解
Jun 02 Python
Django错误:TypeError at / 'bool' object is not callable解决
Aug 16 Python
基于Python和C++实现删除链表的节点
Jul 06 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 Python
Python利用机器学习算法实现垃圾邮件的识别
Jun 28 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
星际RPG字典
2020/03/04 星际争霸
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
php 301转向实现代码
2008/09/18 PHP
PHP与javascript实现变量交互的示例代码
2013/07/23 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
PHP中soap的用法实例
2014/10/24 PHP
PHP自动重命名文件实现方法
2014/11/04 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
2017/06/12 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
javascript最常用与实用的创建类的代码
2010/08/12 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
Javascript堆排序算法详解
2014/12/03 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
JS使用cookie设置样式的方法
2016/06/30 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
ES6中异步对象Promise用法详解
2019/07/31 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
js实现视图和数据双向绑定的方法分析
2020/02/05 Javascript
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
python如何通过twisted实现数据库异步插入
2018/03/20 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
pandas实现将日期转换成timestamp
2019/12/07 Python
python交互模式基础知识点学习
2020/06/18 Python
Jupyter安装链接aconda实现过程图解
2020/11/02 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
毕业生造价工程师求职信
2013/10/17 职场文书
英语一分钟演讲稿
2014/04/29 职场文书
祖国在我心中演讲稿400字
2014/05/04 职场文书