Python 常见 excel 文件的操作模块

为更加深入的理解Python及理解艺赛旗机器人的操作原理,这里简单介绍基于python开发的对于日常文件的操作的模块
	1. Excel文档的读写操作

1.1 Excel 文件表格数据的读取
RPA 机器人的设计器的流程设计过程该功能的实现

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

比如,在游戏中,数值策划用 excel 建好了数值表,我们要导入到游戏中。
概述
这里我使用了 pyexcel-xls 这个东西。我个人觉得这个东西导出的数据结构,结构可读性很强,数据结构如下:
整个 excel 文件,转化为一个字典结构:每个 key 就是一个子表(Sheet)
每个子表(Sheet),转化为一个二维数组:分别为行和列。
安装
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 列):
Python 常见 excel 文件的操作模块

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

#! /usr/bin/env python
#coding=utf-8
#pyexcel_xls 以 OrderedDict 结构处理数据
from collections import OrderedDict

from pyexcel_xls import get_data
from pyexcel_xls import save_data


def read_xls_file():
xls_data = get_data(r"D:\read_test.xlsx")
print "Get data type:", type(xls_data)
for sheet_n in xls_data.keys():
	print sheet_n, ":", xls_data[sheet_n]


if __name__ == '__main__':
read_xls_file()

看一下输出的打印信息:

Python 常见 excel 文件的操作模块

可以看到:

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

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

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

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

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

二、写 excel 数据 (xls)

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

#! /usr/bin/env python
#coding=utf-8

# pyexcel_xls 以 OrderedDict 结构处理数据
from collections import OrderedDict

from pyexcel_xls import get_data
from pyexcel_xls import save_data

def read_xls_file():
xls_data = get_data(unicode(r"D:\ 试试.xlsx", “utf-8”))
print “Get data type:”, type(xls_data)
for sheet_n in xls_data.keys():
print sheet_n, “:”, xls_data[sheet_n]
return xls_data

# 写 Excel 数据, xls 格式
def save_xls_file():
data = OrderedDict()
# sheet 表的数据
sheet_1 = []
row_1_data = [u"ID", u"昵称", u"等级"] # 每一行的数据
row_2_data = [4, 5, 6]
# 逐条添加数据
sheet_1.append(row_1_data)
sheet_1.append(row_2_data)
# 添加 sheet 表
data.update({u"这是 XX 表": sheet_1})

# 保存成xls文件
save_data("D:\write_test.xls", data)

if name == ‘main’:
save_xls_file()

看一下写出的 xls 文件:
Python 常见 excel 文件的操作模块

1.2 Excel 文件表格数据的写入
python 中模块有 xlxswriter 模块
具体的使用过程:
1、安装 xlsxwriter 模块
pip install xlsxwriter
2、使用
import xlsxwriter

`workbook ``=` `xlsxwriter.Workbook(``'hello.xlsx'``)`

`worksheet ``=` `workbook.add_worksheet()`

`worksheet.set_column(``'B:B'``, ``len``(``'hello world'``)``+``1``)`

`worksheet.write(``'B5'``, ``'hello world'``)`

`# 或者:worksheet.write('A1', 'hello world')`

`workbook.close()`

  按行写入:
from xlsxwriter.workbook ``import Workbook

`workbook ``=` `Workbook(``'hello.xlsx'``)`

`worksheet ``=` `workbook.add_worksheet()`

`bold ``=` `workbook.add_format({``'bold'``: ``1``})`

`# Add the worksheet data that the charts will refer to.`

`headings ``=` `[``'Types'``, ``'Sub Type'``, ``'Value 1'``, ``'Value 2'``, ``'Value 3'``]`

`data ``=` `[`

`[``'Type 1'``, ``'Sub Type A'``, ``5000``,      ``8000``,      ``6000``],`

`['``',       '``Sub ``Type` `B', ``2000``,      ``3000``,      ``4000``],`

`['``',       '``Sub ``Type` `C', ``250``,       ``1000``,      ``2000``],`

`[``'Type 2'``, ``'Sub Type D'``, ``6000``,      ``6000``,      ``6500``],`

`['``',       '``Sub ``Type` `E', ``500``,       ``300``,        ``200``],`

`]`

`worksheet.write_row(``'A1'``, headings, bold)`

`for` `row_num, row_data ``in` `enumerate``(data):`

`worksheet.write_row(row_num ``+` `1``, ``0``, row_data)`

`workbook.close()`

3、方法介绍:

  (1) 创建你的.xlsx 文件 : workbook = xlsxwriter.Workbook(‘你的 xlsx 文件名.xlsx’)

  (2) 增加 sheet : worksheet = workbook.add_worksheet()

  (3) 设置 column 的属性,set_column(),第一个参数是确定设置第几列到第几列属性,’A:A’是设置 A 列的属性,’A:D’是设置 A 列到 D 列的属性,第二个参数是设置列宽,通过这个参数可以确定指定的列的宽度

  (4) 一切都准备好了,现在就写入内容了。两种方式:

    第一种,三个参数的,第一个参数是确定开始的行的位置,第二个参数是确定开始的列的位置,第三个参数是要写入的内容

    第二种,两个参数的,第一个参数是确定开始的列行 (A1 这样的,第 A 列第 1 行),第二个参数是写入的内容

    具体的请于.xlsx 文件对应:

           Python 常见 excel 文件的操作模块

  (5) 最后别忘了,把写入后的.xlsx 文件关闭, workbook.close()

在艺赛旗的设计器中使用的是类似该模块的方法
其中读取 Excel 表格数据使用的是 pandas 的 excel_read 模块进行操作的,不需要先打开文件进行数据的操作,而是直接 hou8tai 打开进行数据的读取操作
而写入数据的原理则类似以上 Python 的 xlxswriter 模块的方法进行操作的 Excel 表格对应设计器中的流程的 Excel 的整行,整列,单元格,等的操作
以上为个人暂定见解,尚有许多其他 Python 的模块也能进行相应功能的实现(xlsread 模块)