基本步骤

模块导入

测试是否已经有了 xlrd 模块:

import xlrd

不报错说明模块安装成功,否则,需要先安装:

pip install xlrd

打开文件/获取文件数据

现有一个关于保险行业术语的 Excel 文档:

  • 文件名 Insurance_terms.xlsx
  • 文件中两个 sheet,名称为’GBT 36687~2018’和’JRT 0032-2015’

excel = xlrd.open_workbook("GBT.xlsx")

解析工作表 sheet

获取所有 Sheet 的数量

语法:

excel.nsheets

测试:

print(excel.nsheets) -> 2

获取所有 Sheet 的名称

语法:

excel.sheet_names()

测试:

print(excel.sheet_names()) -> ['GBT 36687~2018','JRT 0032-2015']

获取某个 Sheet 对象

语法1:

excel.sheet_by_name('GBT 36687~2018')

测试1:

print(excel.sheet_by_name('GBT 36687~2018')) -> <xlrd.sheet.Sheet object at 0x000001DF1F423BC8>

语法2:

excel.sheet_by_index(0)

测试2:

print(excel.sheet_by_index(0)) -> <xlrd.sheet.Sheet object at 0x000001DF1F505B48>

解析 sheet 中的汇总数据

获取第一个Sheet:sheetA = excel.sheet_by_index(0);
第一个Sheet name:sheetA.name -> ‘JRT 0032-2015’
第一个Sheet 行数:sheetA.nrows -> 66
第一个Sheet 列数:sheetA.ncols -> 5

解析单元格

解析某一行数据 row

获取一行数据,包含数据类型和内容,语法:

sheet.row(index)

测试:

print(sheetB.row(4)) -> [empty:'', text:'基础术语', text:'财产保险', text:'property insurance', empty:'', text:'以财产及其有关利益为保险标的保险。', text:'财产保险包括财产损失保险、责任保险、信用保险、保证保险等。']

获取一行数据,只包含数据内容,语法:

sheet.row_values(index)

测试:

print(sheetB.row_values(4)) -> ['', '基础术语', '财产保险', 'property insurance', '', '以财产及其有关利益为保险标的保险。', '财产保险包括财产损失保险、责任保险、信用保险、保证保险等。']

获取一行数据,只包含数据类型,语法:

sheet.row_types(index)

测试:

print(sheetB.row_types(6)) -> array('B', [0, 1, 1, 1, 0, 1, 0])

获取一行数据,第start列到第end列(start~end列)[不含第end列],语法:

sheet.row_values(index, start, end)

测试,获取第 8 行前 3 列数据:

print(sheetB.row_values(7, 0, 3)) -> ['', '基础术语', '投保人']

测试,获取第 158 行 第 2~5 列数据:

print(sheetB.row_values(157, 2, 5)) -> ['日常生活能力', 'activities of daily living', 'ADLs']

可以通过行方法获取单元格数据,获取第5行第3个格子里的数据与类型:

print(sheetB.row_slice(4,3,4)) -> [text:'property insurance']

解析某一列数据 col

语法:

sheet.col_values(index)

测试,获取第3列所有数据:

sheetB.col_values(2) -> [‘保险’,‘财产保险’,‘人身保险’…]

解析特定单元格

获取单元格里的数据:

  • sheet.cell_value(1, 2)
  • sheet.cell(1, 2).value
  • sheet.row(1)[2].value

sheetB.cell_value(4,3) -> ‘property insurance’
sheetB.cell(4,3).value -> ‘property insurance’
sheetB.row(4)[3].value -> ‘property insurance’

获取单元格里的数据类型:

  • sheet.cell(1, 2).ctype
  • sheet.cell_type(1, 2)
  • sheet.row(1)[2].ctype

sheetB.cell(4,3).ctype -> 1
sheetB.cell_type(4,3) -> 1
sheetB.row(4)[3].ctype -> 1

完整示例代码

上面都是基础代码,用来单个获取数据,如果要获取整个Excel中的数据,可以参照下面的完整代码:

import xlrd;
book = xlrd.open_workbook("Insurance_terms.xlsx")
sheet = book.sheets()[0]
list = []
for i in range(0, sheet.nrows):row = sheet.row_values(i)print(row);
['', '', '', '', '', '', '']
['', '保险术语中华人民共和国国家标准GB/T 36687—2018(2019-04-01 实施)', '', '', '', '', '']
['', '术语分类', '中国語', '英語', '', '用语解释', '备注']
['', '基础术语', '财产保险', 'property insurance', '', '以财产及其有关利益为保险标的保险。', '财产保险包括财产损失保险、责任保险、信用保险、保证保险等。']
['', '基础术语', '主险', 'main coverage  ', '', '可单独投保的保险产品。', '']

结果集里面,有空数据和标题,可以在循环里去掉:

import xlrd;
book = xlrd.open_workbook("Insurance_terms.xlsx")
sheet = book.sheets()[0]          # 第 1 个 sheet
for i in range(3, sheet.nrows):   # 从第4行开始row = sheet.row_values(i,1)   # 从第2列开始print(row);
['基础术语', '财产保险', 'property insurance', '', '以财产及其有关利益为保险标的保险。', '财产保险包括财产损失保险、责任保险、信用保险、保证保险等。']
['基础术语', '基本险', 'basic policy', '', '可单独投保的保险产品。', '']
['合同要素', '保险合同关系人', 'privity to an insurance contract', '', '保险合同当事人之外的对于保险合同约定的利益享有独立请求权的人。', '注:包括被保险人和受益人。']

一般,我们可能需要将结果包装成 json 格式,于是:

import xlrd;
book = xlrd.open_workbook("Insurance_terms.xlsx")
sheet = book.sheets()[0]
list = []
for i in range(3, sheet.nrows):row = sheet.row_values(i)dic = {"type":row[1], "chinese":row[2],"english":row[3], "shortname":row[4],"description":row[5]}list.append(dic);
print(list);

结果:

[{'type': '基础术语', 'chinese': '保险', 'english': 'insurance', 'shortname': '', 'description': '投保人根据合同约定,向保险人支付保险...'}, {'type': '基础术语', 'chinese': '财产保险', 'english': 'property insurance', 'shortname': '', 'description': '以财产及其有关利益为保险标的保险。'}, {'type': '基础术语', 'chinese': '人身保险', 'english': 'personal insurance', 'shortname': '', 'description': '以人的寿命和身体为保险标的保险。'}...]

单引号的 json 有点讨厌,可以处理一下:

import xlrd;
import json;
book = xlrd.open_workbook("Insurance_terms.xlsx")
sheet = book.sheets()[0]
list = []
for i in range(3, sheet.nrows):row = sheet.row_values(i)dic = {"type":row[1], "chinese":row[2],"english":row[3], "shortname":row[4],"description":row[5]}list.append(dic);
print(json.dumps(list));

如果文档是纯英文数据,那基本已经满足需要,如果含有中文,又想输出,你可能看到下面的结果:

[{"type": "\u57fa\u7840\u672f\u8bed", "chinese": "\u4fdd\u9669", "english": "insurance", "shortname": "", "description": "\u6295\u4fdd\u4eba\u6839\u636e\u5408\u540c\u7ea6\u5b9a\uff0c\u5411\u4fdd ...

还需要最后一步的处理,来阻止编码:

json.dumps(list,ensure_ascii=False)

完整的代码:

import xlrd;
import json;
book = xlrd.open_workbook("Insurance_terms.xlsx")
sheet = book.sheets()[0]
list = []
for i in range(3, sheet.nrows):row = sheet.row_values(i)dic = {"type":row[1], "chinese":row[2],"english":row[3], "shortname":row[4],"description":row[5]}list.append(dic);
print(json.dumps(list,ensure_ascii=False));

最终效果

[
{"type": "基础术语","chinese": "保险","english": "insurance","shortname": "","description": "投保人根据合同约定..."
}, {"type": "代位追偿","chinese": "权益转让书","english": "subrogation receipt","shortname": "","description": "被保险人岀具的证明已获得保险..."
},
...
]

Python 利用xlrd读取Excel文件相关推荐

  1. Python: 用xlrd读取Excel文件(*.xlsx) 实践才是检验真理的唯一标准!!!

    Python: 用xlrd读取Excel文件(*.xlsx) 网上有不少例子但是不知道都检验没,我就新测遇到这个问题 import os import xlrd, sys# # todo 打开excl ...

  2. python xlrd读取文件报错_python利用xlrd读取excel文件始终报错原因

    1.代码按照网上百度的格式进行书写如下: 但运行后,始终报错如下: 百度了xlrd网页: 分明支持xls和xlsx两种格式的文件,但运行始终报错. 最后找到原因是因为我所读取的文件虽然是以.xls命名 ...

  3. Python: 使用xlrd读取Excel文件

    """注: 如果xlrd版本过高, 会出现xlrd.biffh.XLRDError: Excel xlsx file; not supported安装指定版本的xlrd可 ...

  4. python使用xlrd读取xlsx文件_$ 用python处理Excel文档(1)——用xlrd模块读取xls/xlsx文档...

    本文主要介绍xlrd模块读取Excel文档的基本用法,并以一个GDP数据的文档为例来进行操作. 1. 准备工作: 1. 安装xlrd:pip install xlrd 2. 准备数据集:从网上找到的1 ...

  5. 【Python 2.7】xlrd读取Excel文件

    这篇博文参考于<Python 数据处理> 读取Excel文件需要用到xlrd模块,模块下载地址:xlrd下载地址 本博文中Excel文件下载地址:SOWC 2014 Stat Tables ...

  6. Python xlwt数据保存到 Excel中以及xlrd读取excel文件画图

    1.方法一:xlwt 1.1 安装包 pip install xlwt 1.2 保存数据到 Excel import xlwt import numpy as np import random # 新 ...

  7. python的xlrd读取Excel数据失败: raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+‘; not supported‘) ...

    python的xlrd读取Excel数据失败: raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported') xlr ...

  8. Python 使用xlrd读Excel文件报错

    Python 使用xlrd读Excel文件报错:XLRDError: Unsupported format, or corrupt file: Expected BOF record; found ' ...

  9. 已解决Python pandas.read_excel读取Excel文件报错

    已解决(Python pandas.read_excel读取Excel文件报错)io = ExcelFile(io,storage_options=storage.options, engine=en ...

最新文章

  1. 国外版莆田系医院要凉了:谷歌禁止未验证、没有科学根据的医疗广告
  2. 转 openssl 建立服务器证书
  3. 消除 Xcode7 中 directory not found for option 'xxxx' 警告
  4. Exp5 MSF基础应用 20164309 欧阳彧骁
  5. 欢迎使用CSDN-markdown编辑器test
  6. 软件工程导论课程主页 :12-13-2
  7. PaperWeekly 第十一期
  8. 小米11真机现身:稳了!
  9. 手机直播帧数测试软件,斗鱼直播伴侣帧数如何查看?帧数查看方法图文介绍
  10. python在线问卷调查系统源代码_基于Java Web的在线问卷调查系统 源码下载
  11. Ubuntu安装wps,切换中文版,以及解决无法输入汉字的问题
  12. 应用数学软件测试题,数学与应用数学专业试题.doc
  13. VPS部署以及域名设置和DNS解析
  14. appcan java_appcan下载
  15. Windows中Perl命令的安装
  16. JS获取json子项/数组的个数/长度
  17. 什么是区块链服务网络(BSN)
  18. 视野中人与月球的透视比例关系
  19. 给我半首歌的时间,给你说明白Immutable List
  20. antd 每次打开modal 初始化数据

热门文章

  1. java压缩文件为rar_java 实现压缩多个文件 成zip/rar 等压缩文件
  2. 【随记】Flink 时间窗口的起始时间
  3. 使用PHP与SQL搭建可搜索的加密数据库
  4. 从吉日嘎拉那里学到的……
  5. Android进阶:RecyclerView中DiffUtil的使用
  6. 开发小程序,05 后程序员直呼“太简单”?
  7. hadoop高可用hdfs搭建(三节点)
  8. HIVE全部函数详解
  9. chatgpt赋能python:Python单元格间跳转超链接的重要性
  10. 《大学英语4》期末考试复习(二)职场英语1-4单元翻译+自录视频跟记