【python操作Excel的常见方法汇总】 xlrd pandas xlwings
用python处理Excel数据,实现Excel的功能:分列、透视等功能
1. Excel 解压文件
#解压tar_path中的压缩文件到uzipPath
def unzip_archive(tar_path):
print('#######解压文件夹,',tar_path)
for i in os.listdir(tar_path):
if i.endswith('zip'):
print(i)
shutil.unpack_archive(tar_path + "/" + i,unzipPath)
2. Excel的基本打开读写、获取列
常见的Excel操作包括xlrd、pandas、xlwings,基本操作包括打开、读取、获取单元格值、写入等
xlrd
data = xlrd.open_workbook(i) # 打开表
sheet = data.sheet_by_index(0) # 按照index获取工作簿
sheet = data.sheet_by_name('sheet1') # 按照工作簿名获取工作簿
nrows = sheet.nrows # 获取行数
ncols = sheet.ncol # 获取列数
row_value = sheet.row_values(i)
col_value = sheet.col_values(j)
用xlsxwriter写入到Excel
划重点:write_row(row,col,data) 用了enumerate自动匹配索引和迭代的值
#将alist写入tarfile的名为name的工作簿中
def insert_file(alist,tarfile,name='sheet1'):
print("####将透视表写入到",tarfile)
wh = xlsxwriter.Workbook(tarfile)
wadd = wh.add_worksheet(name)
if len(alist) > 0 :
for row_num,row_data in enumerate(alist):
wadd.write_row(row_num,0,row_data)
补充:enumerate的用法
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标
代码是示意结果
https://www.runoob.com/python/python-func-enumerate.html

alist = [['1','1-1'],['2','2-2'],['3','3-3']]
for row_num, row_data in enumerate(alist):
print(row_num,row_data)
pandas
xlwings
xlwings的好处在于可以直接获得某列的指定位置的数据,缺点是 默认自动打开读取的文件,甚至关了运行程序后台还是显示这个文件是打开的……
设置visible之后 只是前段看不见,但是默认的还是会打开……
但是在获取数据上还是很方便的
import xlwings as xw
app = xw.App(visible=True, add_book=False)
wb = app.books.open(file) #打开file
sht = wb.sheets[0]
dateLong = sht.range(f'H3:H{nrows}').value
3.数据透视表
# 根绝tarfile生成数据透视表
df = pd.read_excel(tarfile)
pd.pivot_table(df,index=[u'日期',u'首次访问'],values=[u'手机',u'会话效果'],aggfunc=[np.count_nonzero,np.count_nonzero])
参考链接:https://www.cnblogs.com/Yanjy-OnlyOne/p/11195621.html
但是这种方法写出的透视表数据不美观,后续需要调整,所以自己写了个计数算法
算法思想是:空为0非空为1,计算
lista = [[0 if temp=='' else 1 for temp in list] for list in a]
for i in range(len(a)):
kl = a[i][:2]
if type(kl[0]) == float or type(kl[0]) == int:
kl[0] = getdate(kl[0]) # 从数字型日期转为字符串型日期 key = (kl[0], kl[1]) #前两列作为做透视的key
val = lista[i][2:] #h后两列是值
if key not in dicta.keys():
dicta[key] = val
else:
raw = dicta[key]
dicta[key] = [raw[i] + val[i] for i in range(len(raw))]
result = [list(key) + dicta[key] for key in dicta.keys()]
4. 获取文件内的所有文件
def get_filename(tar_path):
for root,dirs,files in os.walk(tar_path):
for i in files:
if i.endswith('xls') or i.endswith('xlsx'):
print(i)
dir.append(tar_path + "/" + i)
print('#####解压后的Excel文件',dir)
return dir
这里深入了解了os的几个常用函数,包括获取指定目录下的文件、

#获取指定目录下的文件夹或文件的名字列表
a = os.listdir(path)
print(a) # 打开文件
f = os.open("",os.O_RDWR|os.O_CREAT)
os.write(f,"this is test") #重命名
os.rename(src,dst)
os.renames(old,new) #递归地更名
#删除
os.remove(path)
os.removedirs(path) #删除递归目录
#遍历目录
os.walk()
【python操作Excel的常见方法汇总】 xlrd pandas xlwings的更多相关文章
- python操作excel(xlwt写,xlrd读)基本方法
		
python操作excle在测试工作中还是很有用的,比如读取测试数据,回写测试结果到excel. 1.安装 pip install xlwt pip install xlrd 2.写excel # 导 ...
 - Python操作excel的几种方式--xlrd、xlwt、openpyxl
		
openpyxl xlrd xlwt 在处理excel数据时发现了xlwt的局限性–不能写入超过65535行.256列的数据(因为它只支持Excel 2003及之前的版本,在这些版本的Excel中 ...
 - python操作excel常用的方法
		
读操作模块安装 pip install xlrd 写操作模块安装 pip install xlwt xlrd读操作 1.打开excel xl = xlrd.open_workbook('test.xl ...
 - Python操作excel工具
		
python操作excel的工具类有很多,下面举几个常见的工具类: 一. 1.xlrd 只能读取excel操作,支持xls和xlsx两种格式的 2.xlwt 只能写入excel操作,只支持 xls格式 ...
 - 自动化办公:python操作Excel
		
1.安装 -- upgrade pippython -m pip install --- install pypipip install pypi 执行python setup.py install进 ...
 - python操作excel表格(xlrd/xlwt)
		
最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究&q ...
 - Python操作excel(xlrd和xlwt)
		
Python操作excel表格有很多支持的库,例如:xlrd.xlwt.openpyxl.win32com,下面介绍使用xlrd.xlwt和xlutils模块这三个库不需要其他的支持,在任何操作系统上 ...
 - 【转】python操作excel表格(xlrd/xlwt)
		
[转]python操作excel表格(xlrd/xlwt) 最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异, ...
 - python操作excel xlrd和xlwt的使用
		
最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究&q ...
 - 转载:python操作excel表格(xlrd/xlwt)
		
python操作excel表格(xlrd/xlwt) 最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而 ...
 
随机推荐
- 8、IDEA提交代码出现: Fetch failed fatal: Could not read from remote repository
			
转载自 第一步.确认Git公钥/密钥是否生成: 1. 首先查看本地是否生成git密钥,一般在C盘home目录下:[C:你自己的home目录\.ssh] 第二步:添加Git密钥: 右键->Git ...
 - (数据科学学习手札148)geopandas直接支持gdb文件写出与追加
			
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,在我之前的某篇文章中为大家介绍 ...
 - Redux与前端表格施展“组合拳”,实现大屏展示应用的交互增强
			
Redux 是 JavaScript 状态容器,提供可预测化的状态管理.它可以用在 react.angular.vue 等项目中, 但与 react 配合使用更加方便一些. Redux 原理图如下,可 ...
 - C语言写的 史上最公平的投票系统
			
#include<stdio.h> #include<string.h> #define MMM 4 struct student { char name[10]; int c ...
 - Quartz 使用教程
			
首先说说,为什么要写这篇文章: Quartz 的 v2.3.2 版本改动比较大,目前网上的资料都是旧版本,很缺乏相关资料 很多资料讲解非常不全面,例如 Quartz Listener 的介绍和使用基本 ...
 - vh 存在问题?试试动态视口单位之 dvh、svh、lvh
			
大部分同学都知道,在 CSS 世界中,有 vw.vh.vmax.vmin 这几个与视口 Viewport 相关的单位. 正常而言: 1vw 等于1/100的视口宽度 (Viewport Width) ...
 - Java基础1-1-2—java基础语法(运算符)
			
2. 运算符 2.1 算术运算符 运算符和表达式 运算符:对常量或者变量进行操作的符号 表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式. 不同运算符连接的表达式体现的是不 ...
 - nginx 隐藏 index.php 直接访问
			
项目配置文件vhosts加上: if ( !-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 last; break; } 修改后如图
 - 阿里百秀后台管理项目笔记 ---- Day03
			
来吧展示: step1:所有文章数据展示 引入 functions.php 文件执行数据库查询以及判断用户登录状态 require_once '../functions.php'; get_useri ...
 - 2023.1.16[模板]BSGS/exBSGS
			
2023.1.16 [模板]BSGS/exBSGS 全称Boy Step Girl Step 给定一个质数 p,以及一个整数 a,一个整数 b,现在要求你计算一个最小的非负整数 l, 满足\(a^x ...