一、安装xlrd

库的安装我这里就不说了..

二、读取 excel

前提条件:excel文件名称为 excel_data.xlsx

1、打开excelw 文件

workbook = xlrd.open_workbook(filename) # filename 为excel文件路径 + 文件名称

2、获取 excel 的sheet工作表的内容

(1)比如:获取第一个sheet工作表的名称,如图

贴上代码:

get_sheet_name = workbook.sheet_names()[0]  # [0]表示索引,获取第一个sheet工作表名称

(2)比如:获取 excel 所有的sheet工作表的名称

sheetname = workbook.sheet_names()

(3)根据工作表的名称获取sheet工作表页的对象

workbook = xlrd.open_workbook(FileName)
get_sheet_name = workbook.sheet_names()[0]
sheet2 = workbook.sheet_by_name(get_sheet_name)
print(sheet2)

输出:

<xlrd.sheet.Sheet object at 0x00000181B7CFCA90>

(4)根据工作表的索引获取sheet工作表页的对象

workbook = xlrd.open_workbook(FileName)
sheet1 = workbook.sheet_by_index(0)
print(sheet1)

输出:

<xlrd.sheet.Sheet object at 0x000001C661A8C9B0>

(5)获取sheet工作表的行数和列数

workbook = xlrd.open_workbook(FileName)  # 打开文件
sheet1 = workbook.sheet_by_index(1)    # 根据索引获取第一个工作表的内容(通过更改索引数字1,可以获取第几个工作表的内容)
nrows = sheet1.nrows              # 获取sheet工作表的行数
ncols = sheet1.ncols              # 获取sheet工作表的列数
print(nrows)
print(ncols)

输出:

11和7;说明有11行和7列

(6)获取第1行(索引为0)的内容(是一个列表)

workbook = xlrd.open_workbook(FileName)
sheet1 = workbook.sheet_by_index(1)
row_data = sheet1.row_values(0)
print(row_data)

(7)获取第1列(索引为0)的值(是一个列表)

workbook = xlrd.open_workbook(FileName)
sheet1 = workbook.sheet_by_index(1)
col_data = sheet1.col_values(0)
print(col_data)

(8)使用行列索引(从0开始)获取单元格的数据

workbook = xlrd.open_workbook(FileName)
sheet1 = workbook.sheet_by_index(1)
cell_A1 = sheet1.cell(0, 0)
print(cell_A1)

(9)将Excel文件中的数据转换成json数组

import xlrd
import json def readexcel(FileName):
workbook = xlrd.open_workbook(FileName)
sheet1 = workbook.sheet_by_index(1)
nrows = sheet1.nrows idx = sheet1.row_values(0)
# 最终的数据列表
data = []
# 从第1行开始遍历循环所有行,获取每行的数据
for i in range(1,nrows):
row_data = sheet1.row_values(i)
# 组建每一行数据的字典
row_data_dict = {}
# 遍历行数据的每一项,赋值进行数据字典
for j in range(len(row_data)):
item = row_data[j]
row_data_dict[idx[j]] = item
# 将年份字段转成整形
#row_data_dict['year'] = int(row_data_dict['year'])
# 将行数据字典加入到data列表中
data.append(row_data_dict)
result = json.dumps(data,indent = 4,ensure_ascii=False)
print(result) if __name__ == '__main__': readexcel(r'D:/CodeBase/ReadData/ReadExcel/excel_data.xlsx')

输出:

[
{
"车牌号": "粤A123456",
"设备号": 13645454412.0,
"sim卡号": 13645454412.0,
"设备类型": "A5C-8W",
"所属车组": "测试",
"车架号": 123.0,
"服务密码": 123.0
}
]

注意:

json.dumps 进行序列化时,默认使用ascii编码, print json.dumps(data,indent = 4)输出unicode编码的结果,比如: {"\u8f66\u724c\u53f7": "\u7ca4A123456"}

json.dumps(data,indent = 4,ensure_ascii=False),不使用ascii编码,输出结果为:{"车牌号": "粤A123456"}

但是有时也碰到 json.dumps(data,indent = 4,ensure_ascii=False)之后依旧是乱码的格式,可采取下面方式处理:

import json 

dic = {"车牌号": "粤A123456"}print json.dumps(dic,ensure_ascii=False).decode("utf-8").encode("gb2312") #{"车牌号": "粤A123456"}

https://blog.csdn.net/dnxbjyj/article/details/71774176

最新文章

  1. Modify Branding of FreeCAD
  2. PAT 1049. 数列的片段和(20)
  3. SQL语法粗整理
  4. Ubuntu 16.04 LTS Final Beta
  5. nginx 解决400 bad request 的方法(转载)
  6. js中replace的用法【转】
  7. DDD领域驱动设计和实践(转载)
  8. LINUX HA:Pacemaker + Corosync初配成功
  9. HTML5验证及日期显示
  10. Ubuntu+Eclipse+ADT+Genymotion+VirtualBox开发环境搭建
  11. XML中的五个保留字符及实体引用
  12. qmake 小结(Qt 5.4)
  13. Android L(5.0)源码之图形与图像处理之绘图——Canvas
  14. hashtable的运用实例
  15. 1049. Counting Ones (30)
  16. android一个app打开另一个app的指定页面
  17. win10系统磁盘占用率高的解决方法,占用100%的问题
  18. android中一些特殊字符的使用(如:←↑→↓等箭头符号)
  19. Jmeter ----Bean shell使用
  20. [转]DevOps实战:百度持续交付体系与最佳实践大解密!

热门文章

  1. linux下各文件夹的结构及其用途说明
  2. Qt对话框部分学习
  3. MailUtils
  4. centos6编译安装php7
  5. elementUI中input输入框,强制输入数字,并限制输入长度
  6. 97、PageRank算法学习
  7. 机器学习笔记--classification_report&amp;精确度/召回率/F1值
  8. Pandas Series数据结构基本操作
  9. 接口自动化测试框架-AIM2.0
  10. leetcode python翻转字符串里的单词