Python Excel 操作 | xlrd+xlwt 模块笔记
Python 的pandas模块使用xlrd作为读取 excel 文件的默认引擎。但是,xlrd在其最新版本(从 2.0.1 版本开始)中删除了对 xls 文件以外的任何文件的支持。
xlsx files are made up of a zip file wrapping an xml file.
Both xml and zip have well documented security issues, which xlrd was not doing a good job of handling. In particular, it appeared that defusedxml and xlrd did not work on Python 3.9, which lead people to uninstall defusedxml as a solution, which is absolutely insane, but then so is sticking with xlrd 1.2 when you could move to openpyxl.
从官方的邮件中,说的应该是 xlsx 本身是由一个 zip 文件和 xml 的头文件构成的,但是 xml 和 zip 都有详细记录的安全问题,特别是,defusedxml和xlrd似乎在 Python 3.9 上不起作用,这导致人们卸载defusedxml作为解决方案,这绝对是疯了,但是,当然了,您也可以转移到openpyxl,或者仍然坚持使用xlrd 1.2。
$ conda search xlrd
Loading channels: done
# Name Version Build Channel
xlrd 1.0.0 py27_0 conda-forge
xlrd 1.0.0 py27_1 conda-forge
xlrd 1.0.0 py35_0 conda-forge
xlrd 1.0.0 py35_1 conda-forge
xlrd 1.0.0 py36_0 conda-forge
xlrd 1.0.0 py36_1 conda-forge
xlrd 1.1.0 py27_1 pkgs/main
xlrd 1.1.0 py27ha77178f_1 pkgs/main
xlrd 1.1.0 py35_1 pkgs/main
xlrd 1.1.0 py35h45a0a2a_1 pkgs/main
xlrd 1.1.0 py36_1 pkgs/main
xlrd 1.1.0 py36h1db9f0c_1 pkgs/main
xlrd 1.1.0 py37_1 pkgs/main
xlrd 1.1.0 py_2 conda-forge
xlrd 1.2.0 py27_0 pkgs/main
xlrd 1.2.0 py36_0 pkgs/main
xlrd 1.2.0 py37_0 pkgs/main
xlrd 1.2.0 py_0 conda-forge
xlrd 1.2.0 py_0 pkgs/main
xlrd 1.2.0 pyh9f0ad1d_1 conda-forge
xlrd 2.0.1 pyhd3eb1b0_0 pkgs/main
xlrd 2.0.1 pyhd8ed1ab_3 conda-forge
上面的问题将导致您在使用pandas调用 xlsx excel 上的read_excel函数时收到一个错误,即不再支持 xlsx filetype。
为了解决这个问题,你可以:
- 安装 openpyxl 模块:这是另一个仍然支持 xlsx 格式的 excel 处理包。
在
pandas中把默认的 engine 由原来的xlrd替换成openpyxl。
# Install openyxl
pip install openpyxl
# set engine parameter to "openpyxl"
pd.read_excel(path, engine = 'openpyxl')
接下来,介绍一下 Python 读写 Excel 需要导入的xlrd(读),xlwd(写)模块的一些常用操作。
1. xlrd 模块
1.1 Excel 文件处理
打开 excel 文件
import xlrd
excel = xlrd.open_workbook("data.xlsx")
获取并操作 sheet 工作表
sheet_names = excel.sheet_names() # 返回book中所有工作表的名字, ['Sheet1', 'Sheet2', 'Sheet3']
excel.sheet_loaded(sheet_name or indx) # 检查某个sheet是否导入完毕
# 以下三个函数都会返回一个 xlrd.sheet.Sheet() 对象
sheet = excel.sheet_by_index(0) # 通过索引获取,例如打开第一个 sheet 表格
sheet = excel.sheet_by_name("sheet1") # 通过名称获取,如读取 sheet1 表单
sheet = excel.sheets()[0] # 通过索引顺序获取
sheet.row_values(0) #获取第一行的数据
sheet.col_values(0) #获取第一列的数据
sheet.nrows #获取总共的行数
sheet.ncols #获取总共的列数
遍历所有行
for i in range(0, sheet.nrows):
row_list = sheet.row_values(i) # 每一行的数据在row_list数组里
1.2 日期处理
import datetime
from xlrd import xldate_as_datetime
xldate_as_datetime(43346.0, 0).strftime('%Y/%m/%d')
# '2018/09/03'
2. xlwt 模块
2.1 创建 Book 工作簿(即 excel 工作簿)
import xlwt
workbook = xlwt.Workbook(encoding = 'utf-8') # 创建一个workbook并设置编码形式
2.2 添加 sheet 工作表
worksheet = workbook.add_sheet('My Worksheet') # 创建一个worksheet
2.3 向工作表中添加数据并保存
worksheet.write(1,0, label = 'this is test') # 参数对应行, 列, 值
workbook.save('save_excel.xls') # 保存



如何卸载 python setup.py install 安装的包?



本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
Python Excel 操作 | xlrd+xlwt 模块笔记的更多相关文章
- Python Excel操作——xlrd、xlwd
读取 1.导入模块 import xlrd 2.打开Excel文件读取数据 data = xlrd.open_workbook('excel.xls') 3.获取一个工作表 1 table = dat ...
- Python如何读写Excel文件-使用xlrd/xlwt模块
时间: 2020-08-18 整理: qiyuan 安装和导入 1.模块介绍 在 python 中使用 xlrd/xlwt 和 openpyxl 模块可以对Excel电子表格(xls.xlsx文件)进 ...
- 【转】python操作excel表格(xlrd/xlwt)
[转]python操作excel表格(xlrd/xlwt) 最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异, ...
- 转载:python操作excel表格(xlrd/xlwt)
python操作excel表格(xlrd/xlwt) 最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而 ...
- python excel操作
python操作excel表格(xlrd/xlwt)转载:http://www.cnblogs.com/zhoujie/p/python18.html 最近遇到一个情景,就是定期生成并发送服务器使 ...
- python数据库操作之pymysql模块和sqlalchemy模块(项目必备)
pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 1.下载安装 pip3 install pymysql 2.操作数据库 (1).执行sql #! ...
- python excel操作总结
1.openpyxl包的导入 Dos命令行输入 pip install openpyxl==2.3.3 这里注意一下openpyxl包的版本问题 版本装的太高有很多api不支持了,所以笔者这里用的是2 ...
- 【Python】excel读写操作 xlrd & xlwt
xlrd ■ xlrd xlrd模块用于读取excel文件内容 基本用法: workbook = xlrd.open_workbook('文件路径') workbook.sheet_names() # ...
- Python操作Excel表格,xlwt模块的使用
Python可以操作Excel的模块不止一种,我习惯使用的写入模块是xlwt(一般都是读写模块分开的) 按照模块使用pip install xlwt 就行了,很常规的方式 直接进代码解析,本文源码 w ...
- python(读取excel操作-xlrd模块)
一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境. 或者在cmd窗口 pip install ...
随机推荐
- 续集来了!我让 GPT-4 用 Laf 三分钟写了个完整的待办事项 App
书接前文,上篇文章我们教大家如何三分钟时间用 Laf 实现一个自己的 ChatGPT. 一觉醒来,GPT-4 已经发布了! GPT-4 实现了真正的多模态,可以把纸笔画的原型直接写出网页代码.读论文时 ...
- win10_Dock安装设置
1.安装:(在win10上安装) 桌面版:https://www.docker.com/products/docker-desktop, 安装后重启电脑 2.配置 打开DockerDesktop,(可 ...
- 从源码解析Go exec timeout 实现机制
1. 背景 环境:golang 1.9,drawn 测试使用golang exec 执行命令,并配置过期时间,测试脚本如下. 现象:执行脚本后,到超时时间后并为超时退出,反而阻塞住了 func Tes ...
- 【原理揭秘】Vite 是怎么兼容老旧浏览器的?你以为仅仅依靠 Babel?
作者:京东科技 孙凯 一.前言 对前端开发者来说,Vite 应该不算陌生了,它是一款基于 nobundle 和 bundleless 思想诞生的前端开发与构建工具,官网对它的概括和期待只有一句话:&q ...
- [Web Server]Tomcat调优之SpringBoot内嵌Tomcat源码分析
以springboot:2.3.12.RELEASE中内嵌的tomcat-embed-core:9.0.46为例,进行分析 1 概述 1.0 关键依赖包 spring-boot-autoconfigu ...
- [Linux]常用命令之【source|export/env】#点命令/环境变量#
1 source 1-1 source 命令概述 source命令用法:source FileName 简述 source命令(从 C Shell 而来)是bash shell的内置命令. sourc ...
- Mybatis 框架下 SQL 注入攻击的方式
前言 SQL注入漏洞作为WEB安全的最常见的漏洞之一,在java中随着预编译与各种ORM框架的使用,注入问题也越来越少. 新手代码审计者往往对Java Web应用的多个框架组合而心生畏惧,不知如何下手 ...
- dotnet初探:用miniapi创建一个自己的url
致谢 首先写在前面,非常感谢微软mvp桂素伟先生的技术分享,因为微软的文档大部分都如机器翻译般的生硬,让人难以读下去,正是他的无私分享为我的.net学习旅程提供了方向,非常感谢.如果大家对他比较感兴趣 ...
- 关于Java中代码的执行顺序
结论 注意 只有显式的加载类 JVM才会加载到内存中 先加载父类的静态代码块 然后执行子类静态代码块 当前类存在类静态变量注意引用类型没进行赋值操作初始化为null 并不会显式的加载类又存在静态代码块 ...
- 这可能是最全面的Redis面试八股文了
Redis连环40问,绝对够全! Redis是什么? Redis(Remote Dictionary Server)是一个使用 C 语言编写的,高性能非关系型的键值对数据库.与传统数据库不同的是,Re ...