学会python永不加班系列之操作excel
python作为一种解释性语言,简单高效的模式逐渐火爆。同时存在多种扩展性。
永不加班系列 python正确操作excel
实验环境:
系统:win10
语言:python3.8
承载软件:pycharm2021.1.2 (Professional Edition)
第三方类库:openpyxl、xlrd
一、第三方类库介绍
xlrd库是一个很常用的读取excel文件的库,其对excel文件的读取可以实现比较精细的控制。
openpyxl是实现excel的写入操作的第三方类库
一、安转第三方类库
pip install xlrd==1.2.0 #此处一定要安转这个版本的xlrd,新版的xlrd可能会出现不兼容xlsx后缀文件的情况
pip install openpyxl
二、引用xlrd读取excel数据
首先我先来选取一个测试的数据,因为在之前写过Numpy和pandas的操作我们可以直接生成一个名为“test.xlsx”的文件。点击此处获取知识链接
因为工作中大部分人的excel并不像此处如此完美所以不可以直击使用pandas库进行操作,结合工作中的实际情况自行斟酌使用
- import numpy as np
- import pandas as pd
- df = pd.DataFrame(data=np.random.randint(1,90,size=[10,3]),columns=['日用户','日销售额','日成本'])
- df.to_excel('test.xlsx')
导入xlrd包并读取数据
- import xlrd
- #选中要读取的excel文件
- test1 = xlrd.open_workbook('test.xlsx')
- # 根据sheet索引获取sheet页 0表示1 1表示2 以此类推
- sheet = test1.sheet_by_index(0)
- # 根据sheet名称获取sheet页 0表示1 1表示2 以此类推
- sheet1 = test1.sheet_by_name('Sheet1')
- # 打印工作表的名称、行数和列数
- print("打印工作表的名称、行数和列数:")
- print('名称:',sheet.name, '行数:',sheet.nrows,'列数:', sheet.ncols)
- # 选中列
- col = sheet.col_values(2)
- print('col',col)
- # 选中行
- row = sheet.row_values(2)
- print('row',row)
- # 根据行索引选定列 注意row()中以1开始 []中以0开始
- print(sheet.row(1)[2].value)
三、引入openpyxl写入数据
- import openpyxl
- # 选中写入的excel文件
- workbook=openpyxl.load_workbook('test.xlsx')
- # 选中将要写入的sheet页
- sheets = workbook["Sheet1"]
- # 给第一个单元格写入数据;
- sheets["A1"] = "黑龙江省"
- # 设置字体为红色;字体大小;字体为粗体;字体为斜体
- from openpyxl.styles import Font,colors
- sheets["A1"].font = Font(color='981818',size = 15,bold = True,italic = True,)
- # 获取第一个单元格的内容;
- print(sheets["A1"].value)
- # 给任意一个单元格赋值
- sheets.cell(2,1,value = "江苏省")
# 保存数据,如若名称存在就覆盖 否则新建文件- workbook.save('更改后输出.xlsx')
效果如图
此处知识异常简单需要基本的语句操作练习即可可游刃有余。
下面推荐一个今天遇到的问题胡乱写了个demo
- import openpyxl
- import xlrd
- # op选中文件
- workbook1=openpyxl.load_workbook('test1.xlsx')
- sheets=workbook1['Sheet1']
- # xlrd选中文件
- book = xlrd.open_workbook("test1.xlsx")
- # 选中sheet1
- sheet = book.sheet_by_index(0)
- # 单位列
- dw = sheet.col_values(2)
- # 数量列
- nb = sheet.col_values(1)
- print(dw)
- # 若单位为0则乘以10000否则不变
- for i in range(len(dw)):
- if dw[i]==0:
- data = sheets.cell(i+1, 2).value=nb[i]*10000
- else:
- data = sheets.cell(i+1, 2).value = nb[i]
- print(data)
- # 删除单位(第三)列
- sheets.delete_cols(3)
- # 覆盖保存原数据
- workbook1.save('test1.xlsx')
操作前
操作后
学会python永不加班系列之操作excel的更多相关文章
- python:利用xlrd模块操作excel
在自动化测试过程中,对测试数据的管理和维护是一个不可忽视的点.一般来说,如果测试用例数据不是太多的话,使用excel管理测试数据是个相对来说不错的选择. 这篇博客,介绍下如何利用python的xlrd ...
- 学好Python不加班系列之SCRAPY爬虫框架的使用
scrapy是一个爬虫中封装好的一个明星框架.具有高性能的持久化存储,异步的数据下载,高性能的数据解析,分布式. 对于初学者来说还是需要有一定的基础作为铺垫的学习.我将从下方的思维导图中进行逐步的解析 ...
- python练习题--计算总分平均分操作excel
''' 有一个存着学生成绩的文件,里面存的是json串,json串读起来特别不直观,需要你写代码把它都写到excel中,并计算出总分和平均分,json格式如下 { "1":[&qu ...
- 分分钟钟学会Python - 第四章 文件操作
4.1 文件基本操作 obj = open('路径',mode='模式',encoding='编码') obj.write() # 写入 obj.read() # 读取 obj.close() #关闭 ...
- Python操作Excel删除一个Sheet
在使用Python进行数据分析处理,操作Excel,有时需要删除某个Excel里的某个sheet,这里记录一个我测试成功的一个办法 软件环境: 1.OS:Win 10 64位 2.Python 3.7 ...
- Python 利用Python操作excel表格之openyxl介绍Part2
利用Python操作excel表格之openyxl介绍 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群(群号:7156436) ## 绘图 c = LineChart() ...
- Python 读写操作Excel —— 安装第三方库(xlrd、xlwt、xlutils、openpyxl)
数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件.因此用 Python 进行数据相关的工作时,难免要和 Excel 打交道. 如果仅仅是要以表单形式保存数据,可以借助 ...
- Python读写操作Excel模块_xlrd_xlwt_xlutils
Python 读写操作Excel -- 安装第三方库(xlrd.xlwt.xlutils.openpyxl) 如果仅仅是要以表单形式保存数据,可以借助 CSV 格式(一种以逗号分隔的表格数据格式)进行 ...
- 用Python操作excel文档
使用Python第三方库 这一节我们学习如何使用Python去操作Excel文档.如果大家有人不知道Excel的话,那么建议先学一学office办公基础.这里想要操作Excel,必须安装一个Pytho ...
随机推荐
- Java Web下MySQL数据库的增删改查(二)
前文:https://www.cnblogs.com/Arisf/p/14095002.html 在之前图书管理系统上做了改进优化 图书管理系统v2 首先是项目结构: 1.数据库的连接: 1 pack ...
- 2. Go并发编程--GMP调度
目录 1. 前言 1.1 Goroutine 调度器的 GMP 模型的设计思想 1.2 GMP 模型 1.3. 有关M和P的个数问题 1.4 P 和 M 何时会被创建 2. 调度器的设计策略 3. g ...
- 基于React和GraphQL的黛梦设计与实现
写在前面 这是笔者在中秋无聊写着玩的,假期闲暇之余憋出来的帖子.麻雀虽小,但五脏俱全,涉及到的方方面面还是蛮全的.所以就设计了一个黛梦(demo)------ 打通了GraphQL的接口与前端交互的流 ...
- ESP8266- 使用AT指令获取网络时间
前言:很早就考虑过用 ESP8266 获取网络时间,以前都是用 ESP8266 刷机智云的 Gagent 固件,但无奈现在手头的 ESP-01 的 Flash 只有 1M,实在无法胜任.经过在网络上的 ...
- PHP的switch和ifelse谁更快?
对于多个if条件判断的情况下,我们使用switch来代替ifelse对于代码来说会更加的清晰明了,那么他们的效率对比呢?从PHP手册中发现有人已经对比过了,自己也用他的代码进行了实验: $s = ti ...
- 织梦arclist文章标题字数太短
解决dedecms UTF-8首页文章标题显示字数太短的办法原因分析:因为UTF-8编码1个中文汉字占用的是3个字节,GBK占用的是2个字节,所以,原先$titlelen = AttDef($titl ...
- Batch Size对神经网络训练的影响
前言 这篇文章非常全面细致地介绍了Batch Size的相关问题.结合一些理论知识,通过大量实验,文章探讨了Batch Size的大小对模型性能的影响.如何影响以及如何缩小影响等有关内容. 本文来 ...
- 鸿蒙内核源码分析(进程概念篇) | 进程在管理哪些资源 | 百篇博客分析OpenHarmony源码 | v24.01
百篇博客系列篇.本篇为: v24.xx 鸿蒙内核源码分析(进程概念篇) | 进程在管理哪些资源 | 51.c.h .o 进程管理相关篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管理内 ...
- YbtOJ#732-斐波那契【特征方程,LCT】
正题 题目链接:http://www.ybtoj.com.cn/contest/125/problem/2 题目大意 给出\(n\)个点的一棵树,以\(1\)为根,每个点有点权\(a_i\).要求支持 ...
- Redis之品鉴之旅(五)
Redis事务 原子性:就是最小的单位 一致性:好多命令,要么全部执行成功,要么全部执行失败 隔离性:一个会话和另一个会话之间是互相隔离的 持久性:执行了就执行了,数据保存在硬盘上 典型例子:银行转账 ...