xlrd、xlwt全面解决xls文件单元格格式的读取、复写之读取篇

        本文所要解决的问题就是完美地读取 表头模版文件里的内容、所有单元的格式,并在写入时自动完成对于列宽自适应单元格内容,行高要自动适应字高。对于考虑arcpy工具通用性,而要使用  xlrd、xlwt库来开发python excel统计报表完美输出的开发者具有很好的借鉴作用。

1、问题驱动
     工作经常要根据数据库统计相关数据,并生成excel表,为了减少后续索然无味的表格整饰工作就一步生产我们需要完整表头、相应单元格格式字体、字粗细、字大、字色、单元格底色、边框设置,并且要求列宽要自适应单元格内容,行高要自动适应字高。
      excel文件的操作库很多,许多功能都很强大,如pandas库和openpyxl库等等,可以实现很多复杂的操作,但是这些都不是python自带的库需要额外安装,最大问题还是对于开发的工具通用性和适用性影响很大,在其他用户要使用用pandas库开发的excel操作工具时,也要安转类似的库,这样就影响到工具的推广,为此使用python自带xlrd、xlwt库来完成开发是最好的选择。      xlrd、xlwt库的缺点一是无法支持*.xlsx文件,只支持xls文件;二是无法对已存在的xls文件中追加记录,只能新建文件;三是 xlrd、xlwt库功能较多弱,一些高级操作无法完成。对于缺点一问题不大,xlsx文件可转存为xls文件,或生成的xls文件对应用也毫无影响。关键在于缺点二,无法追加内容,只能新建。如果在新建文件里直接生成表头,因为表头内容多样,格式五花八门,涉及大量个合并单元格等,用程序直接写表头,十分麻烦而且生成效果很差。为了统计表格完美的展现,需使用一个表头模版文件,提前设置要完美的表头,新建文件把一个表头模版的内容及格式读取复制过去就很好解决这个问题。

2、应用环境:win10 ,python 2.7,excel 2016

3、解决问题
      3.1 xlrd 读取表头模版文件内容、格式。
      主要读取了每个单元格内容、单元格行列号、对齐方式、字体名称、字高、字粗细、字体颜色、单元格填充底色、上下左右边框线代号、是否为合并单元的信息(合并单元起始行、终止行、起始列、终止列) 
        读取单元格内容cell=sheet.cell(row_idx,col_idx)、单元格行列号较简单,这里不做说明。
着重说明一下 对齐方式、字体名称、字高、字粗细、字体颜色、单元格填充底色、上下左右边框线代号、是否为合并单元的信息(合并单元起始行、终止行、起始列、终止列) 信息的读取。
        第一步 获取当前单元格格式索引号style_index = cell.xf_index,再根据该索引号取得当前单元格在工作簿格式列表xf_list中对应格式对象 xfx = workbook.xf_list[style_index]。
        第二步 水平对齐信息为 xfx.alignment.hor_align;垂直对齐信息为xfx.alignment.vert_align。
        第三步 字体相关信息较对齐信息稍复杂多了一步。取得当前单元格在工作簿的格式列表xf_list中对应格式内容xfx = workbook.xf_list[style_index]后,通过xfx获得单元格字体索引号font = xfx.font_index,根据字体索引号取得工作簿中对应的字体对象 font_obj = workbook.font_list[font],字体名称font_obj.name,字高font_obj.height,字粗细font_obj.bold(0未加粗,1:加粗),字色font_obj.colour_index,

    # 获取当前workbook字体索引号
    font = xfx.font_index
    # 使用字体索引获取字体对象
    font_obj = workbook.font_li
  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值