python爬虫必经之路,使用xlwt操作excel文件!

python爬虫必经之路,使用xlwt操作excel文件!

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

一、介绍xlwt

使用xlwt可以操作与MS Excel 97/2000/XP/2003 XLS files兼容的excel文件。不兼容Excel2007/2010等 XLSX等格式的文件。

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

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

python爬虫必经之路,使用xlwt操作excel文件!

二、安装xlwt

pip install xlwt

三、主要 API介绍:

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

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

python爬虫必经之路,使用xlwt操作excel文件!

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

3)打开文件时,如果提示编码不对,需要使用二进制流的方式,比如 open('c: est.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:	ext.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

猜你喜欢

转载自blog.csdn.net/qq_41841569/article/details/82801991
今日推荐