用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多线程抓取代理服务器IP地址的示例
Nov 09 Python
对python中的xlsxwriter库简单分析
May 04 Python
python中datetime模块中strftime/strptime函数的使用
Jul 03 Python
python+pandas+时间、日期以及时间序列处理方法
Jul 10 Python
用python代码将tiff图片存储到jpg的方法
Dec 04 Python
对Pycharm创建py文件时自定义头部模板的方法详解
Feb 12 Python
Python开发网站目录扫描器的实现
Feb 21 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
Python 70行代码实现简单算式计算器解析
Aug 30 Python
python图形开发GUI库wxpython使用方法详解
Feb 14 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
Oct 19 Python
python palywright库基本使用
Jan 21 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脚本的10个技巧(2)
2006/10/09 PHP
一个ubbcode的函数,速度很快.
2006/10/09 PHP
PHP无刷新上传文件实现代码
2011/09/19 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
Yii2.0实现生成二维码功能实例
2017/10/24 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
c#程序员对TypeScript的认识过程
2015/06/19 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
浅谈关于.vue文件中style的scoped属性
2017/08/19 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
VUE中v-on:click事件中获取当前dom元素的代码
2018/08/22 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
axios封装,使用拦截器统一处理接口,超详细的教程(推荐)
2019/05/02 Javascript
RxJS的入门指引和初步应用
2019/06/15 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
面向初学者的Python编辑器Mu
2018/10/08 Python
python3安装speech语音模块的方法
2018/12/24 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
提高python代码运行效率的一些建议
2020/09/29 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
十佳青年事迹材料
2014/08/21 职场文书
解放思想演讲稿
2014/09/11 职场文书
董事会决议范本
2015/07/01 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
vue实现同时设置多个倒计时
2021/05/20 Vue.js
继承Win10缺点!教你关闭Win11烦人的网络搜索
2021/11/23 数码科技
MySQL优化及索引解析
2022/03/17 MySQL