python xlutils copy_使用python的xlrd,xlwt和xlutils.copy保留样式

# coding: ascii import xlrd, xlwt # Demonstration of copy2 patch for xlutils 1.4.1 # Context: # xlutils.copy.copy(xlrd_workbook) -> xlwt_workbook # copy2(xlrd_workbook) -> (xlwt_workbook, style_list) # style_list is a conversion of xlrd_workbook.xf_list to xlwt-compatible styles # Step 1: Create an input file for the demo def create_input_file(): wtbook = xlwt.Workbook() wtsheet = wtbook.add_sheet(u'First') colours = 'white black red green blue pink turquoise yellow'.split() fancy_styles = [xlwt.easyxf( 'font: name Times New Roman, italic on;' 'pattern: pattern solid, fore_colour %s;' % colour) for colour in colours] for rowx in xrange(8): wtsheet.write(rowx, 0, rowx) wtsheet.write(rowx, 1, colours[rowx], fancy_styles[rowx]) wtbook.save('demo_copy2_in.xls') # Step 2: Copy the file, changing data content # ('pink' -> 'MAGENTA', 'turquoise' -> 'CYAN') # without changing the formatting from xlutils.filter import process,XLRDReader,XLWTWriter # Patch: add this function to the end of xlutils/copy.py def copy2(wb): w = XLWTWriter() process( XLRDReader(wb,'unknown.xls'), w ) return w.output[0][1], w.style_list def update_content(): rdbook = xlrd.open_workbook('demo_copy2_in.xls', formatting_info=True) sheetx = 0 rdsheet = rdbook.sheet_by_index(sheetx) wtbook, style_list = copy2(rdbook) wtsheet = wtbook.get_sheet(sheetx) fixups = [(5, 1, 'MAGENTA'), (6, 1, 'CYAN')] for rowx, colx, value in fixups: xf_index = rdsheet.cell_xf_index(rowx, colx) wtsheet.write(rowx, colx, value, style_list[xf_index]) wtbook.save('demo_copy2_out.xls') create_input_file() update_content()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值