python读取excel(Python处理xls)

来源:互联网 发布:mynba2k18网络维护中 编辑:程序博客网 时间:2024/06/05 18:23

前言

在很多应用场景中,程序都需要读取excel的配置。

比如,在游戏中,数值策划用excel 建好了数值表,我们要导入到游戏中。


概述

这里我使用了 pyexcel-xls 这个东西。我个人觉得这个东西导出的数据结构,结构可读性很强,数据结构如下:

整个excel文件,转化为一个字典结构:每个key就是一个子表(Sheet)

每个子表(Sheet),转化为一个二维数组:分别为行和列。

注意,本文对应的版本更新为 pyexcel-xls 0.2.3。


安装

pypi 的地址:

https://pypi.Python.org/pypi/pyexcel-xls/ 


■ 方法一:

可以直接用pip安装

pip install pyexcel-xls

■ 方法二:

下载安装包手动安装。

先安装两个依赖包

xlrd pyexcel-io


然后再安装 pyexcel-xls


使用

一、读excel数据 (xls, xlsx)


1,先建立一个目标excel表,这里为了做演示,简单建立一个 read_test.xlsx 文件:

里面的数据(3行,4列):



2,写python 脚本,读这个文件:

[python] view plain copy
  1. #! /usr/bin/env python  
  2. #coding=utf-8  
  3.   
  4. # pyexcel_xls 以 OrderedDict 结构处理数据  
  5. from collections import OrderedDict  
  6.   
  7. from pyexcel_xls import get_data  
  8. from pyexcel_xls import save_data  
  9.   
  10.   
  11. def read_xls_file():  
  12.     xls_data = get_data(r"D:\read_test.xlsx")  
  13.     print "Get data type:", type(xls_data)  
  14.     for sheet_n in xls_data.keys():  
  15.         print sheet_n, ":", xls_data[sheet_n]  
  16.   
  17.   
  18. if __name__ == '__main__':  
  19.     read_xls_file()  


看一下输出的打印信息:



可以看到:

整个excel文件,转化为一个OrderedDict (有序字典)结构:每个key就是一个子表(Sheet)。

每个子表(Sheet),转化为一个列表结构:很像二维数组,第一层列表为行(Row),行的下标为列(Column),对应的值为单元格的值。编码为 unicode

简单,易用,读出数据后,非常适合做二次处理!

■ 注意,excel文件名(就是那个xls或者xlsx文件),尽量不要用中文,如果您要使用中文,请转化为unicode编码,如:

xls_data = get_data(unicode(r"D:\试试.xlsx", "utf-8"))


二、写excel数据 (xls)

根据上文,写也比较简单,不做过多解释。

[python] view plain copy
  1. #! /usr/bin/env python  
  2. #coding=utf-8  
  3.   
  4. # pyexcel_xls 以 OrderedDict 结构处理数据  
  5. from collections import OrderedDict  
  6.   
  7. from pyexcel_xls import get_data  
  8. from pyexcel_xls import save_data  
  9.   
  10.   
  11. def read_xls_file():  
  12.     xls_data = get_data(unicode(r"D:\试试.xlsx""utf-8"))  
  13.     print "Get data type:", type(xls_data)  
  14.     for sheet_n in xls_data.keys():  
  15.         print sheet_n, ":", xls_data[sheet_n]  
  16.     return xls_data  
  17.   
  18.   
  19. # 写Excel数据, xls格式  
  20. def save_xls_file():  
  21.     data = OrderedDict()  
  22.     # sheet表的数据  
  23.     sheet_1 = []  
  24.     row_1_data = [u"ID", u"昵称", u"等级"]   # 每一行的数据  
  25.     row_2_data = [456]  
  26.     # 逐条添加数据  
  27.     sheet_1.append(row_1_data)  
  28.     sheet_1.append(row_2_data)  
  29.     # 添加sheet表  
  30.     data.update({u"这是XX表": sheet_1})  
  31.   
  32.     # 保存成xls文件  
  33.     save_data("D:\write_test.xls", data)  
  34.   
  35.   
  36. if __name__ == '__main__':  
  37.     save_xls_file()  


看一下写出的xls文件:


好,数据读写完成!
原创粉丝点击