前言
用 Python 读取 Excel 文件并转换为 Json 的实现
最近由于一些日常的事情,需要对 Excel 里提供的数据进行分类或排序等相关操作。虽然用 Excel 软件做这些工作完全没有问题,但是处理的数据还是在 Excel 表格里,并没有办法直接使用,还是习惯直接处理 Json 格式的数据。Excel 本身有类似 ExcelToJson 的插件,但使用这样的插件有一些缺点。
- 需要联网
- 需要打开 Excel 软件
为了方便,这里通过万能的胶水语言 Python 尝试一下。
使用 xlrd 库
1 | pip install xlrd |
xlrl 简单了解
总的来说 xlrd 的 api 取名是非常人性化的,基本上看到方法名字你就知道用来干什么了。
比如
xl_workbook = xlrd.open_workbook(path)
- 按文件路径读文件并返回一个对象
xl_workbook.sheet_names()
- 返回一个 excel 文件中所有的表名,就是底部的 Sheet1,这个其实很有用,这个干啥用呢?看下面
xl_workbook.sheet_by_name(sheet_names[0])
- 通过表名返回一个表
当然,如果你的 excel 文件很简单,只有一张表,那么也可以通过
xl_workbook.sheet_by_index(0)
这样简单的方式,直接用下标索引按顺序访问表。
为了方便,后面以下图中这张表为例
对于一张普通的表来说,第一行特别重要,因为他记录了这张表要统计哪些具体的信息,相当于是一个对象的属性。当然,在某些情况下,不一定是表的第一行,但一定是某个固定的行。
获取表的关键属性
1 | row = xl_sheet.row(0) # 1st row |
output
1 | (0) text Company |
可以看到我们可以获取表格中每一列的内容的值和他的属性。
这里的属性其实非常有用,由于上述表格非常简单,每一列都只是简单的文字描述,因此都是 text。如果你的表格设计的比较高端,比如这里是一个 excel 的选择器,那么就可以做更多的事情了。
按行读取文件
其实,上图中的表就是一个 list ,每一个相当于是一个对象或者说是字典,因此我们要做的就是按行访问表,并按照每一行进行赋值即可
1 | results = [] |
由于第0行是属性,因此直接从第一行开始遍历,用属性构造字典对象并添加到数组中,最后使用 json 库进行一个转换即可。
总结
用 Python 进行数据处理果然方便,同样的功能用其他语言,可能需要多的代码,但是 Python 却可以非常快速的完成。