Python操作的Excel库有xlrd、xlwt、pyExcelerator和openpyxl。其中,pyExcelerator只支持2003版本,openpyxl只支持2007版本,xlrd支持Excel任何版本的读取,xlwt支持Excel任何版本的写入。
Excel的写入相对比CVS复杂,Excel可以实现设置数据格式、合并单元格、设置公式和插入图片等功能。使用xlwt实现上述功能的代码如下:
import xlwt
#新建一个Excel文件
wb = xlwt.Workbook()
#新建一个sheet
ws = wb.add_sheet('Python',cell_overwrite_ok=True)
#定义字体对齐方式对象
alignment = xlwt.Alignment()
#设置水平方向
alignment.horz = xlwt.Alignment.HORZ_CENTER
#设置垂直方向
alignment.vert = xlwt.Alignment.VERT_CENTER
#定义格式对象
style = xlwt.XFStyle()
style.alignment = alignment
#合并单元格write_merge(开始行,结束行,开始列,结束列,内容,格式)
ws.write_merage(0,0,0,5,'Python网络爬虫',style)
#写入数据wb.write(行,列,内容)

代码依次实现的功能如下。
设置字体水平垂直居中:该功能实现共分为两步,第一步是定义xlwt.Alignment()对象,分别设置其水平方向和垂直方向的属性;第二步是定义xlwt.XFStyle()对象,将设置好的Alignment()对象赋予XFStyle()对象。在写入数据的时候,XFStyle()对象作为write_merge()方法的参数。
合并单元格:主要由write_merge(开始行,结束行,开始列,结束列,内容,格式)方法实现。
生成表格并计算每行总和:通过嵌套循环生成5行6列的表格,第1到第5列的数据写入由write()方法实现;第6列数据是累计求和,由Excel自带公式实现。
插入图片:图片插入是由insert_bitmap(img, x, y, x1, y1, scale_x=0.8, scale_y=1)实现的,图片格式必须为bmp,否则无法插入并提示错误。
把数据写入Excel的整体思路如下:
(1)xlwt创建生成临时Excel对象。
(2)添加WorkSheets对象。
(3)单元格的位置由行列索引决定,索引从0开始。
(4)数据写入主要由write_merge()和write()实现,两者分别是合并单元格再写入和单元格写入。
(5)设置数据格式是在写入(write_merge()和write())的数据中传入参数style。
接着读取Excel数据,由xlrd模块实现,我们以上述已生成的Excel为读取目标,代码如下:

读取Excel的数据思路大致如下:
(1)xlrd生成Workbook对象,并指向Excel文件。
(2)选择Workbook里某个WorkSheets对象。
(3)获取WorkSheets里数据已占用的总行数和总列数(某个单元格数据)。
(4)循环总行数和总列数,读取每一个单元格的数据。