【python】解析Excel中使用xlrd库、xlwt库操作,写入excel进阶完整脚本实例(五)

写excel的难点可能不在构造一个workbook的本身,而是填充的数据,不过这不在范围内。在写excel的操作中也有棘手的问题,比如写入合并的单元格就是比较麻烦的,另外写入还有不同的样式。

本次拟构建以下即要用xlwt实现的东西:

完整脚本实例如下:

# -*- coding: utf-8 -*-"""Created on Thu Jan 18 00:26:42 2018excel写入操作脚本@author: BruceWong"""''''' 设置单元格样式 '''  import xlwt#设置单元格格式def set_style(name,height,bold=False):      # 初始化样式     style = xlwt.XFStyle()      # 为样式创建字体    font = xlwt.Font()       font.name = name      font.bold = bold      font.color_index = 4      font.height = height      # 为样式创建边界    borders= xlwt.Borders()      borders.left= 6      borders.right= 6      borders.top= 6      borders.bottom= 6      #将创建的字体和边界写入    style.font = font      style.borders = borders      #返回初始化的结果    return style  #写excel函数  def write_excel():      #创建工作簿,首要的第一步    f = xlwt.Workbook()       '''    创建第一个sheet: sheet1     '''     #使用add_sheet创建sheet1    sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True)       row0 = [u'姓名',u'状态',u'数学',u'语文',u'英语',u'合计',u'总计']      column0 = [u'小王',u'小丽',u'小黑',u'大锤']      status = [u'月考',u'段考',u'期考',u'小计']      #生成第一行,写入的函数是write    for i in range(0,len(row0)):          sheet1.write(0,i,row0[i],set_style('Times New Roman',220,True))      #生成第一列和最后一列(合并4行)      i, j = 1, 0      while i < 4*len(column0) and j < len(column0):          sheet1.write_merge(i,i+3,0,0,column0[j],set_style('Arial',220,True)) #第一列          sheet1.write_merge(i,i+3,7,7) #最后一列"合计"          i += 4          j += 1      #生产合计栏    sheet1.write_merge(17,17,0,1,u'合计',set_style('Times New Roman',220,True))      #生成第二列      i = 0      while i < 4*len(column0):          for j in range(0,len(status)):              sheet1.write(j+i+1,1,status[j],set_style('Times New Roman',220,True))          i += 4      #保存文件    f.save('example_excel_write.xls')     '''    创建第二个sheet: sheet2     '''      #创建sheet2    sheet2 = f.add_sheet(u'sheet2',cell_overwrite_ok=True)       row0 = [u'姓名',u'年龄',u'出生日期',u'爱好',u'关系']      column0 = [u'小王',u'小丽',u'小黑',u'小白',u'小红',u'小米',u'大锤']      #生成第一行      for i in range(0,len(row0)):          sheet2.write(0,i,row0[i],set_style('Times New Roman',220,True))      #生成第一列      for i in range(0,len(column0)):          sheet2.write(i+1,0,column0[i],set_style('Times New Roman',220))      sheet2.write(1,2,'1990/1/11')     #合并列单元格    '''merged_cells返回的这四个参数的含义是:(row,row_range,col,col_range),    其中[row,row_range)包括row,不包括row_range;col也是一样    (1, 3, 4, 5)的含义是:第2到3行(不包括4)合并,(3, 7, 4, 5)的含义是:第5到5列合并。    '''    #merged_cell 和 write_merge略有区别,这里要注意merged_cell不包含右边,而write_merge是包含两个边的    #merge_cell 与 write_merge两者都是从0开始算起的    '''write_merge设定的四个参数的含义是:(row,row_range,col,col_range),    其中[row,row_range)包括row,包括row_range;col也是一样    (4, 7, 4, 5)的含义是:第5到8行合并,第5到6列合并。    '''    sheet2.write_merge(4,7,4,5,u'同学')       sheet2.write_merge(2,3,4,4,u'朋友')       f.save('example_excel_write.xls') #保存文件if __name__ == '__main__':      write_excel()  

最终效果如下:

  • 表格sheet1:
  • 表格sheet2:

(0)

相关推荐