xlrd与xlwt:xls文件

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

1、两个模块

读xlrd

写xlwt

  1. import xlrd,xlwt

2、读

2.1 文件、表格信息的获取

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

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

表格名:workBook.sheet_names()

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

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

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

  1. sheet1=allsheetname[0]

2.2读取

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

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

按名字:workBook.sheet_by_name(名字)

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

②sheet的名字、行数、列数

三个属性:name、nrows、ncols

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

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

方法:

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

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

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

④获取某个单元格的值

以获取14行5列为例

三种:

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

cell(a,b).value

cell_value(a,b)

row(a)[b].value

补充

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

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

⑤单元格内容的数据类型

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

通过ctype属性访问

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

  1. sheet1_content1.cell(13,4).ctype
  2.  
  3. 1

完整的读代码:

  1. import xlrd
  2. def read_excel():
  3.  
  4. workBook = xlrd.open_workbook('安徽省.xls')
  5. allsheetname = workBook.sheet_names()
  6. # print(allsheetname)
  7.  
  8. sheet1 = allsheetname[0]
  9. # print(sheet1)
  10.  
  11. sheet1_content1 = workBook.sheet_by_index(0)
  12. sheet1_content2 = workBook.sheet_by_name('1-12')
  13.  
  14. rows = sheet1_content1.row_values(6)
  15. cols = sheet1_content1.col_values(4)
  16.  
  17. A1 = sheet1_content1.cell(13, 4).value
  18. A2 = sheet1_content1.cell_value(13, 4)
  19. A3 = sheet1_content1.row(13)[4].value
  20.  
  21. print(A1, A2, A3)
  22.  
  23. print(sheet1_content1.cell(13,4).ctype)
  24. if __name__=='__main__':
  25. read_excel()

3、写

①导入模块xlwt

  1. import xlwt

②生成文件空间

xlwt.Workbook()

  1. wb=xlwt.Workbook()

③给文件空间加表

add_sheet(表名)

  1. sheet=wb.add_sheet('sheet1')

④向表中写入数据

sheet.write(row,col,内容)

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

⑤保存文件空间为文件

wb.save(文件名)

  1. wb.save('test.xls')

完整代码:

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

总结:

1、读时的关键语句:

  1. wb=xlrd.open_workbook(文件名) #打开文件空间
  2.  
  3. allsheetname=wb.sheet_names() #所有表名
  4.  
  5. sheet1=wb.sheet_by_index(索引) #通过索引打开表
  6. sheet2=wb.sheet_by_name(表名) #通过名字打开表
  7.  
  8. rows=sheet1.row_values(6) #第7行的所有值
  9. cols=sheet1.col_values(5) #第6列的所有值
  10.  
  11. #访问单个值
  12. A1=sheet1.cell(6,5).value
  13. A2=sheet1.cell_value(6,5)
  14. A3=sheet1.row(6)[5].value
  15.  
  16. #循环访问所有值 此处是col.value而非sheet.cell().value
  17. for row in sheet1.get_rows():
  18. for col in row:
  19. print(col.value)

2、写时的关键语句:

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

3、表格属性

sheet的名字、行数、列数

三个属性:name、nrows、ncols

  1. sheet.name
  2. sheet.nrows
  3. 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、模块

  1. import openpyxl

2、读取

①加载xlsx文件

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

②获取sheet内容

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

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

③获取sheet属性

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

④获取某个单元格的值

  1. sheet.cell(1,1).value

    sheet['A1']

3、写入

①打开workbook并添加sheet

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

②写入

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

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

③保存

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

注意:

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

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

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

总结:

1、读的关键语句

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

2、写的关键语句

  1. outwb=openpyxl.Workbook() #①新建workbook
  2. ws=outwb.create_sheet(index=0) #②在之前的workbook中新建一个sheet
  3.  
  4. #③用for循环为每个单元格赋值,range(1,len+1),len为要写入的行/列数
  5. #下文便是10行10列
  6. for r in range(1,11):
  7. for c in range(1,11):
  8. ws.cell(r,c).value='{}行{}列'.format(r,c)
  9.  
  10. #④保存为文件
  11. out_filename='测试.xlsx'
  12. 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. Cobbler批量安装操作系统

    1,关闭selinux getenforce  查看selinux状态 Disabled 修改/etc/selinux/config 文件 将SELINUX=enforcing改为SELINUX=di ...

  2. 10分钟了解代码命名规范(Java、Python)

    前言 关于代码命名,我相信是经常困扰很多小伙伴的一个问题,尤其是对于强迫症晚期患者.怎么说呢,每次小编在写代码之前,总会在想啊想啊,用什么命名法好呢?对于经常在C++.Java.Python等主流语言 ...

  3. Linux安装MySQL详细步骤(CentOS6、CentOS7)

    1.查看mysql的依赖(centos7 要把mysql改成mariadb) rpm -qa | grep mysql 2.删除mysql的依赖,可以两个都执行(centos7 要把mysql改成ma ...

  4. jquery里面的$(this)和this的区别

    感谢原文作者:何少旭 原文链接:https://www.cnblogs.com/heshaoxu/p/7672736.html 前言 当你用的是jquery时,就用$(this),如果是JS,就用th ...

  5. NSArray基本概念

    1.NSArray的基本概念 什么是NSArray? NSArray是OC中的数组类,开发中建议尽量使用NSArray替代C语言中的数组 C语言中数组的弊端 int array[4] = {10, 8 ...

  6. 【转】JVM--内存区域划分

    [原文地址]https://blog.csdn.net/sd4015700/article/details/50109939 Eden Space.Survivor Space.Tenured Gen ...

  7. k8s之资源限制以及探针检查

    k8s之资源限制以及探针检查 一.资源限制 1. 资源限制的使用 当定义Pod时可以选择性地为每个容器设定所需要的资源数量.最常见的可设定资源是CPU和内存大小,以及其他类型的资源. 2. reuqe ...

  8. hgame-week3-web-wp

    hgame第三周(web ak) 1.SecurityCenter 先看看hint(**vendor是第三方库和插件放置的文件夹,一般来源于composer的安装) 找到了使用的twig模板,应该是t ...

  9. Nvicat for mysql连接腾讯云数据库TDSQL-C(原CynosDB)

    连接步骤 1.打开腾讯云TDSQL-C(原CynosDB)集群详情中的中的集群连接外网地址,如下图 2.云数据库的账号密码在这里找,第一次不知道密码可以重置密码 3.以root账户为例,打开navic ...

  10. mybatis中的#和$的使用规范

    MyBatis 中 #{} 和 ${} 的区别 1.在MyBatis 的映射配置文件中,动态传递参数有两种方式: (1)#{} 占位符 (2)${} 拼接符 2.#{} 和 ${} 的区别 (1) 1 ...