python 使用xlwt操作excel文件

python操作excel文件有多种方式,这里主要介绍使用xlwt操作excel文件

一、介绍xlwt

参见 :https://github.com/python-excel,使用xlwt可以操作与MS Excel 97/2000/XP/2003 XLS files兼容的excel文件。不兼容Excel2007/2010等 XLSX等格式的文件。

xlwt只能创建并保存新的文件,不能往原文件里追加内容。

如果要支持.xlsx格式需要使用xlsxwritter, 如果需要追加文件需要使用xlutils.  目前xlutils是2.0版,支持python3.5以下。 

二、安装xlwt

pip install xlwt

三、主要 API介绍:

1、在未介绍xlwt主要api之前,先介绍几点注意事项:

1)如果使用editplus等编辑器编写python文件,保存文件时注意编码格式,要选用utf-8编码格式,否则在命令行执行时会报编码错误;

2)在python源文件中Tab制表符要用空格代替;

3)打开文件时,如果提示编码不对,需要使用二进制流的方式,比如 open('c:\test.bmp','rb')

4)写入excel汉字乱码时,需要使用utf-8子附件,比如Workbook(encoding='utf-8')

5)将整数写入excel时,比如将array=([1,2,3])写入excel文件时,可能会报错,由于xlwt默认会转换成float类型,所以要显示声明类型,比如 data = numpy.arange(1,65,dtype=float).reshape((8,8))


2、xlwt 设置单元格格式方法

1)Borders()

border0 = Borders()

border0.top = 1

border0.bottom = 1

border0.left =1

border0.right = 1 

其中边框的类型有:

  # Text values for these borders attributes:
    # left, right, top, bottom and diag
    'no_line':  0x00,
    'thin':     0x01,
    'medium':   0x02,
    'dashed':   0x03,
    'dotted':   0x04,
    'thick':    0x05,
    'double':   0x06,
    'hair':     0x07,
    'medium_dashed':                0x08,
    'thin_dash_dotted':             0x09,
    'medium_dash_dotted':           0x0a,
    'thin_dash_dot_dotted':         0x0b,
    'medium_dash_dot_dotted':       0x0c,

    'slanted_medium_dash_dotted':   0x0d,

2) Font(),

font0 = Font()

font0.name = '微软雅黑'

font0.struck_out = True

font0.bold = True

其中字体的属性有:

        'bold': 布尔类型,
        'charset': charset_map,
        'color':  'colour_index',
        'color_index':  'colour_index',
        'colour':  'colour_index',
        'colour_index': [colour_map, colour_index_func_15],
        'escapement': {'none': 0, 'superscript': 1, 'subscript': 2},
        'family': {'none': 0, 'roman': 1, 'swiss': 2, 'modern': 3, 'script': 4, 'decorative': 5, },
        'height': IntULim(0xFFFF), # practical limits are much narrower e.g. 160 to 1440 (8pt to 72pt)
        'italic': 布尔类型,
        'name': any_str_func,
        'outline': 布尔类型,
        'shadow': 布尔类型,
        'struck_out': 布尔类型,

        'underline': [bool_map, {'none': 0, 'single': 1, 'single_acc': 0x21, 'double': 2, 'double_acc': 0x22, }],  

其中:

charset_map = {
    # Text values for font.charset
    'ansi_latin':           0x00,
    'sys_default':          0x01,
    'symbol':               0x02,
    'apple_roman':          0x4d,
    'ansi_jap_shift_jis':   0x80,
    'ansi_kor_hangul':      0x81,
    'ansi_kor_johab':       0x82,
    'ansi_chinese_gbk':     0x86,
    'ansi_chinese_big5':    0x88,
    'ansi_greek':           0xa1,
    'ansi_turkish':         0xa2,
    'ansi_vietnamese':      0xa3,
    'ansi_hebrew':          0xb1,
    'ansi_arabic':          0xb2,
    'ansi_baltic':          0xba,
    'ansi_cyrillic':        0xcc,
    'ansi_thai':            0xde,
    'ansi_latin_ii':        0xee,
    'oem_latin_i':          0xff,
    }

3) XFStyle()

  style0 = XFStyle()

 style0.font = font0

style0.borders = border0 

4)设置单元格的宽度

wb = Workbook()

ws0 = wb.add_sheet('sheet0')

ws0.col(0).width = 100

5)格式化日期

 style =XFStyle()

    style.num_format_str = fmt

其中fmt类型有:

fmts = [
        'M/D/YY',
        'D-MM-YY',
        'MM-YY',
        'h:mm AM/PM',
        'h:mm:ss AM/PM',
        'h:mm',
        'h:mm:ss',
        'M/D/YY h:mm',
        'mm:ss',
        '[h]:mm:ss',
        'mm:ss.0'

]

其他格式化

fmts = [
    'general',
    '0',
    '0.00',
    '#,##0',
    '#,##0.00',
    '"$"#,##0_);("$"#,##',
    '"$"#,##0_);[Red]("$"#,##',
    '"$"#,##0.00_);("$"#,##',
    '"$"#,##0.00_);[Red]("$"#,##',
    '0%',
    '0.00%',
    '0.00E+00',
    '# ?/?',
    '# ??/??',
    'M/D/YY',
    'D-MMM-YY',
    'D-MMM',
    'MMM-YY',
    'h:mm AM/PM',
    'h:mm:ss AM/PM',
    'h:mm',
    'h:mm:ss',
    'M/D/YY h:mm',
    '_(#,##0_);(#,##0)',
    '_(#,##0_);[Red](#,##0)',
    '_(#,##0.00_);(#,##0.00)',
    '_(#,##0.00_);[Red](#,##0.00)',
    '_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)',
    '_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)',
    '_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)',
    '_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)',
    'mm:ss',
    '[h]:mm:ss',
    'mm:ss.0',
    '##0.0E+0',
    '@'
]

6)公式计算

 wb =Workbook()

ws =wb.add_sheet('sheet0')

ws.write(0,0,  Formula("SUM($A1:$C1)"))

3、插入图片

wb = Workbook()

ws =add_sheet('sheet0')

ws.insert_bitmap('test.bmp',0,0)

wb.save('d:\text.xls')

也可以将图片读入内存,然后写入excel文件

with open('test.bmp','rb') as bmpfile:

      bmpdata = bmpfile.read()

      ws.insert_bitmap_data(bmpdata,0,0)

4、工作簿保护,表格保护

wb = Workbook()

wb.protect = True
wb.wnd_protect = True

wb.obj_protect = True

ws0  = wb.add_sheet('sheet0')

ws0.protect = True
ws0.wnd_protect = True
ws0.obj_protect = True
ws0.scen_protect = True

ws0.password = "123456"

5、表格冻结

ws0.panes_frozen = True
ws0.horz_split_pos = 2


ws2.panes_frozen = True
ws2.vert_split_pos = 2




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值