xlrd与xlwt:xls文件

如果不想看前半部分的基础知识,可以直接看最后的总结部分

1、两个模块

读xlrd

写xlwt

import xlrd,xlwt

2、读

2.1 文件、表格信息的获取

打开文件:xlrd.open_workbook('Excel_name.xls')

workBook = xlrd.open_workbook('安徽省.xls')

表格名:workBook.sheet_names()

返回一个list类型,其中包含了所有sheet表的名字

allsheetname=workBook.sheet_names()
print(allsheetname) ['1-12', 'CNKI']

取其中一个表格的名字,以索引下标的方式

sheet1=allsheetname[0]

2.2读取

①获取整个sheet的内容并保存在变量中

按索引号:workBook.sheet_by_index(索引号)

按名字:workBook.sheet_by_name(名字)

#按索引号获取sheet内容
sheet1_content1=workBook.sheet_by_index(0) #按sheet名字获取sheet内容
sheet1_content2=workBook.sheet_by_name('1-12')

②sheet的名字、行数、列数

三个属性:name、nrows、ncols

s1=sheet1_content1
print(s1.name,s1.nrows,s1.ncols)
1-12 516 7

③获取某行和某列的数据(存为list)

方法:

获取第i+1行:row_values(i)

获取第j+1列:col_values(j)

#获取第7行的内容
rows=sheet1_content1.row_values(6) #获取第4列的内容
cols=sheet1_content1.col_values(3)
print(rows)
[' 行政区域面积', '平方公里', '1841', '2182', '1695', '2344', '2046']

④获取某个单元格的值

以获取14行5列为例

三种:

sheet1_content1.cell(13,4).value
sheet1_content1.cell_value(13,4)
sheet1_content1.row(13)[4].value

cell(a,b).value

cell_value(a,b)

row(a)[b].value

补充

循环Excel的所有行输出每个单元格值:

#循环表的每一行
for row in sheet1_content1.get_rows():
#循环一行的所有列
for col in row:
#获取每个单元格的值
print(col.value())

⑤单元格内容的数据类型

共6种:[0 empty , 1 string , 2 number , 3 date ,4 boolean , 5 error]

通过ctype属性访问

注意内容与④中值间的不同:内容是cell(13,4),值是cell(13,4).value

sheet1_content1.cell(13,4).ctype

1

完整的读代码:

import xlrd
def read_excel(): workBook = xlrd.open_workbook('安徽省.xls')
allsheetname = workBook.sheet_names()
# print(allsheetname) sheet1 = allsheetname[0]
# print(sheet1) sheet1_content1 = workBook.sheet_by_index(0)
sheet1_content2 = workBook.sheet_by_name('1-12') rows = sheet1_content1.row_values(6)
cols = sheet1_content1.col_values(4) A1 = sheet1_content1.cell(13, 4).value
A2 = sheet1_content1.cell_value(13, 4)
A3 = sheet1_content1.row(13)[4].value print(A1, A2, A3) print(sheet1_content1.cell(13,4).ctype)
if __name__=='__main__':
read_excel()

3、写

①导入模块xlwt

import xlwt

②生成文件空间

xlwt.Workbook()

wb=xlwt.Workbook()

③给文件空间加表

add_sheet(表名)

sheet=wb.add_sheet('sheet1')

④向表中写入数据

sheet.write(row,col,内容)

for row in range(5):
for col in range(4):
sheet.write(row,col,'第{0}行第{1}列'.format(row,col))

⑤保存文件空间为文件

wb.save(文件名)

wb.save('test.xls')

完整代码:

import xlwt
def write_excel():
wb=xlwt.Workbook()
sheet=wb.add_sheet('sheet1')
for row in range(5):
for col in range(4):
sheet.write(row,col,'第{0}行第{1}列'.format(row+1,col+1))
wb.save('test.xls') if __name__=='__main__':
write_excel()

总结:

1、读时的关键语句:

wb=xlrd.open_workbook(文件名) #打开文件空间

allsheetname=wb.sheet_names() #所有表名

sheet1=wb.sheet_by_index(索引) #通过索引打开表
sheet2=wb.sheet_by_name(表名) #通过名字打开表 rows=sheet1.row_values(6) #第7行的所有值
cols=sheet1.col_values(5) #第6列的所有值 #访问单个值
A1=sheet1.cell(6,5).value
A2=sheet1.cell_value(6,5)
A3=sheet1.row(6)[5].value #循环访问所有值 此处是col.value而非sheet.cell().value
for row in sheet1.get_rows():
for col in row:
print(col.value)

2、写时的关键语句:

wb=xlwr.Workbook() #创建工作空间
sheet=wb.add_sheet('sheet1') #创建表 表名为sheet1 #通过循环行列添加数据
for row in range(5):
for col in range(4):
sheet.write(row,col,'第{0}行第{1}列'.format(row+1,col+1)) wb.save('test.xls') #保存为xls文件

3、表格属性

sheet的名字、行数、列数

三个属性:name、nrows、ncols

sheet.name
sheet.nrows
sheet.ncols

补充:

1、读取EXCEL,不带第一行的标题

Python:读取Excel 不带第一行标题

2、读取表格时,无法显示正确的汉字

EXCEL:汉字解码后输出

openpyxl:xlsx

xlrd与xlwt处理的是xls文件,单个sheet最大的行数为65535,超过时报错ValueError: row index was 65536, not allowed by .xls format

当需要处理更多行数即xlsx时,可以使用openpyxl函数,最大行数为1048576。

以下的基础部分不想看,可以直接去'注意'和'总结'部分

1、模块

import openpyxl

2、读取

①加载xlsx文件

filename=r'D:\诗歌.xlsx'
wb=openpyxl.load_workbook(filename) #加载文件

②获取sheet内容

sheetnames = wb.get_sheet_names()#获取所有sheet的名字
sheet = wb.get_sheet_by_name(sheetnames[0])#以名字的方式访问sheet

#也可以直接以Key索引的方式访问
sheet = wb[ sheetnames[0] ]
#如果有多个表,可以用for循环遍历
#for sheet in wb:
  print(sheet.title)

③获取sheet属性

rows = sheet.max_row #最大行数
cols = sheet.max_colmn #最大列数

④获取某个单元格的值

sheet.cell(1,1).value

sheet['A1']

3、写入

①打开workbook并添加sheet

outwb=openpyxl.Workbook() #创建一个Workbook
sheet =outwb.create_sheet(index=0) #在Workbook下创建sheet

②写入

for row in range(1,10):
for col in range(1,10):
sheet.cell(row,col).value='{}行{}列'.format(row,col)

#以上是主流方式
#还有其他两种方式
#①用Key索引方式 sheet['A1']='1行1列'
#②一次写一行,从原文件最左下方开始 sheet.append([1,2,3])
#方法②的结果是在原文件后多了1行3列,内容是1 2 3

③保存

out_filename='测试.xlsx'
outwb.save(out_filename)

注意:

1、openpyxl只能读写xlsx文件,不能读写xls文件;xlwt和xlrd正好相反;

2、openpyxl的读写起始行,在循环时都是从1开始,表示第i行;而xlwt与xlrd的起始行是0,实际表示第i+1行

3、写文件名时,要加r前缀,或者把字符串中的所有连接符\写为双斜杠\\

总结:

1、读的关键语句

filename=r'D:\词语.xlsx'
wb=openpyxl.load_workbook(filename) #①打开xlsx文件 sheetnames=wb.get_sheet_names() #②获取文件中的所有sheet名
ws=wb.get_sheet_by_name(sheetnames[0])#③打开第一个sheet #④获取最大行数和最大列数
rows = ws.max_row
cols = ws.max_column #⑤for循环读取单元格数据,起始下标为1
for r in range(1 , rows):
for c in range (1 , cols):
print( ws.cell(r,c).value )

2、写的关键语句

outwb=openpyxl.Workbook() #①新建workbook
ws=outwb.create_sheet(index=0) #②在之前的workbook中新建一个sheet #③用for循环为每个单元格赋值,range(1,len+1),len为要写入的行/列数
#下文便是10行10列
for r in range(1,11):
for c in range(1,11):
ws.cell(r,c).value='{}行{}列'.format(r,c) #④保存为文件
out_filename='测试.xlsx'
outwb.save( out_filename )

学习自:

python 读写 Excel文件 - shaomine - 博客园

浅谈Python_Openpyxl使用(最全总结) - 吾爱源码

Python:Excel的更多相关文章

  1. Python导出Excel为Lua/Json/Xml实例教程(三):终极需求

    相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 Python导出E ...

  2. Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验

    Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...

  3. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  4. 转:Python 与 Excel 不得不说的事

    数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件.因此用 Python 进行数据相关的工作时,难免要和 Excel 打交道. 如果仅仅是要以表单形式保存数据,可以借助 ...

  5. python:利用xlrd模块操作excel

    在自动化测试过程中,对测试数据的管理和维护是一个不可忽视的点.一般来说,如果测试用例数据不是太多的话,使用excel管理测试数据是个相对来说不错的选择. 这篇博客,介绍下如何利用python的xlrd ...

  6. 记录:python读取excel文件

    由于最近老是用到python读取excel文件,所以特意记录一下python读取excel文件的大体框架. 库:xlrd(读),直接pip安装即可.想要写excel文件的话,安装xlwd库即可,也是直 ...

  7. 小白学 Python(23):Excel 基础操作(上)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  8. 小白学 Python(24):Excel 基础操作(下)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  9. 从Excel到Python:最常用的36个Pandas函数

    本文涉及pandas最常用的36个函数,通过这些函数介绍如何完成数据生成和导入.数据清洗.预处理,以及最常见的数据分类,数据筛选,分类汇总,透视等最常见的操作. 生成数据表 常见的生成数据表的方法有两 ...

随机推荐

  1. react diff算法浅析

    diff算法作为Virtual DOM的加速器,其算法的改进优化是React整个界面渲染的基础和性能的保障,同时也是React源码中最神秘的,最不可思议的部分 1.传统diff算法计算一棵树形结构转换 ...

  2. SAP下载报表速度慢?为啥你不试试python多线程

    由于SAP系统自身原因,或者公司内部ABAP代码的算法效率不高,我们经常遇到,手工执行某个事务代码下载某个报表会非常耗时,小爬曾见过公司某个自开发的报表,单家公司的数据下载超过半小时.如果我们刚好接到 ...

  3. Nginx同server配置下配置多个localhost路由地址

    nginx多页面路由配置,进入 nginx/conf/nginx.conf: http { ...... server { listen 80; server_name localhost; loca ...

  4. springcloud 实现简单的 消费者和生产者 模式(Restfule 的风格)

    一.springcloud 实现简单的 消费者和生产者 模式(Restfule 的风格) 1.实现简单的消费者和生产者 springcloud使用的http协议进行传输数据,也就是说springclo ...

  5. ApacheCN 大数据译文集 20211206 更新

    PySpark 大数据分析实用指南 零.前言 一.安装 Pyspark 并设置您的开发环境 二.使用 RDD 将您的大数据带入 Spark 环境 三.Spark 笔记本的大数据清理和整理 四.将数据汇 ...

  6. 计算机电子书 2020 CDNDrive 备份(预览版 II)

    下载方式 pip install CDNDrive # 或 # pip install git+https://github.com/apachecn/CDNDrive cdrive download ...

  7. shiro-springboot整合,平行依赖

    最近在弄shiro,把shiro单独提出来,弄成一个子项目,这样可以降低项目的冗余,但是把shiro打成jar包后,另一个项目添加其依赖后,在IDE项目中正常的运行,打成jar包后运行,则不断的报错 ...

  8. css自定义属性(css变量)

    感谢原文作者:Kuku殿下 原文链接:https://segmentfault.com/a/1190000015948538 前言 刚开始的"css变量",经扩展之后,称为&quo ...

  9. android 安装gcc环境

    看到了一篇关于Android上利用终端来使用gcc编译C/C++源程序的文章,我感到无比兴奋,所以立刻将我自己的安装过程记下来.那个后记也很有用的. gcc编译源代码需要创建临时文件,而gcc又只能安 ...

  10. Volatile关键字和ThreadLocal变量的简单使用

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11812459.html package thread; /** * volatile关键字和T ...