参考http://www.jb51.net/article/77626.htm

前言

用到的模块

import xlrd #用来读取excel文件,不能修改数据
import xlwt #创建Excel文件并对其进行操作,但不能对已有的Excel文件进行修改
import xlutils #对已有的Excel文件进行修改

模块的安装
笔者使用anaconda来管理python的各个包,因此要安装可以直接在命令行界面中使用如下代码

conda install xlrd
conda install xlwt
conda install xlutils

当然,也可以使用pip安装或者直接去官网找package安装包
分析excel文件的层级对象
要读取excel的数据,就要了解excel的结构,根据excel的结构一层一层的去读取数据。

excel有三层级对象,workbooksheet,和cell。一个excel文件就是一个workbook,所以在最初我们必须要打开这个excel文件,也就是workbook。sheet我们都很熟悉,就是表,我们都知道一个excel文件有时候会有很多的表,所以我们必须要选择是读取哪个表的数据,最后才是cell,cell其实就是格子,excel的表格就是一个二维数组,cell就是这个表格中的最小单元,也就是我们读取数据存储的地方。

xlrd部分

打开Excel文件读取内容

workbook= xlrd.open_workbook('excelFile.xls')

抓取所有sheet页的名称

worksheets = workbook.sheet_names()

获取工作表

table = workbook.sheets()[0]          #通过索引顺序获取
table = workbook.sheet_by_index(0)    #通过索引顺序获取
table = workbook.sheet_by_name(u'Sheet1') #通过名称获取

获取整行和整列的值(数组)

table.row_values(i)
table.col_values(i)

获取行数和列数

nrows = table.nrows
ncols = table.ncols

读取单元格数据

cell_A2 = table.cell(0,1).value
cell_A2 = table.cell_value(0,1)
cell_A2 = table.row(0)[1].value #使用行索引
cell_A2 = table.col(1)[0].value #使用列索引

获取单元格中值的类型

cell_type = table.cell_type(rown,coln)

xlwt部分

创建workbook和sheet对象

workbook = xlwt.Workbook(encoding = 'ascii') #注意Workbook的开头W要大写
sheet1 = workbook.add_sheet('sheet1',cell_overwrite_ok=True)
sheet2 = workbook.add_sheet('sheet2',cell_overwrite_ok=True)

向sheet页中写入数据

sheet1.write(0,0,'this should overwrite1')
sheet1.write(0,1,'1111111111111111')
sheet2.write(0,0,'this should overwrite2')
sheet2.write(1,2,'2222222222222222')

使用样式

#初始化样式
style = xlwt.XFStyle() 
#为样式创建字体
font = xlwt.Font()
font.name = 'Times New Roman'
font.bold = True
#设置样式的字体
style.font = font
#使用样式
sheet.write(0,1,'some bold Times text',style)

保存该excel文件,有同名文件时直接覆盖

workbook.save('E:\\Code\\Python\\test2.xls')

xlutils部分

打开一个workbook

readbook = xlrd.open_workbook('test.xls') 
workbook= xlutils.copy.copy(readbook)

获取sheet对象,通过sheet_by_index()获取的sheet对象没有write()方法

writesheet= workbook.get_sheet(0)

写入数据

writesheet.write(1, 1, 'changed!')

添加sheet页

workbook.add_sheet('sheetnnn2',cell_overwrite_ok=True)

保存该Excel文件,利用保存时同名覆盖达到修改excel文件的目的,注意未被修改的内容保持不变

workbook.save('test.xls')