当前位置:
首页 > temp > python入门教程 >
-
学会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')
操作前
操作后
原文:https://www.cnblogs.com/t-dashuai/p/15496753.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数