Python学习笔记十一(Python xlwt模块)

在平时的工作过程中,经常需要通过EXCEL统计一些数据,比如服务器性能报表、资产统计报表、网络流量报表等等。Python的xlwt模块可以把数据写到指定的表单和单元格里面。下面总结一下Python xlwt模块的安装和使用方法。

1.下载和安装xlwt模块,如果能import xlwt就说明安装成功。

[root@monitor software]# wget https://pypi.python.org/pypi/xlwt/xlwt-1.2.0.tar.gz
[root@monitor software]# tar -zxvf xlwt-1.2.0.tar.gz
[root@monitor software]# cd xlwt-1.2.0
[root@monitor xlwt-1.2.0]# python setup.py install
[root@monitor xlwt-1.2.0]# python
Python 2.7.6 (default, Dec 18 2015, 14:36:46) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import xlwt

2.xlwt模块常用的操作步骤。
1)创建工作簿(workbook),其实就是创建一个EXCEL文件。

import xlwt
workbook = xlwt.Workbook(encoding = 'utf-8')

2)创建工作表。

worksheet = workbook.add_sheet("www.zmzblog.com")

3)单元格里面写数据。

row0 = [u'网站名',u'域名',u'IP地址',u'端口号',u'网站负责人']
>>> for i in range(0,len(row0)):
...     print i,
...     worksheet.write(0,i,row0[i]) #单元格所在的row,column,和value.

4)保存数据到Excel文件里面。

workbook.save('zmzblog.xls')

5)xlwt工作表单元格和字体的设置。

import xlwt
from datetime import datetime

style0 = xlwt.easyxf('font: name Times New Roman, color-index red, bold on',num_format_str='#,##0.00') #设置单元格字体和颜色
style1 = xlwt.easyxf(num_format_str='D-MMM-YY') #设置单元格数据的类型

wb = xlwt.Workbook()
ws = wb.add_sheet('A Test Sheet')

ws.write(0, 0, 1234.56, style0)
ws.write(1, 0, datetime.now(), style1)
ws.write(2, 0, 1)
ws.write(2, 1, 1)
ws.write(2, 2, xlwt.Formula("A3+B3"))

wb.save('example.xls')

在系统的管理工作中,经常需要把一些程序的执行结果存放到文本文件里面,让后通过Python程序的for循环遍历文件的内容,在通过Python的xlwt模块把数据存放到EXCEL文件里面。下面程序是通过按照行读取文本文件zmzblog_monthly_report.log的内容,然后按照行以”;”做分割把具体的内容存到EXCEL表单指定的单元格里面。
xlwt

#!/usr/bin/env python
#coding=utf-8

'''
@author = 'sfzhang'
'''

import os
import xlwt

path = os.getcwd()
file = os.path.join(path,'zmzblog_monthly_report.log')

def xls_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

def txt2xls():
    wb = xlwt.Workbook()
    ws1 = wb.add_sheet("zmzblog report")
    row0 = [u'日期',u'业务线',u'IP地址',u'逻辑CPU个数(单位:个)',u'总内存(单位:GB)',u'CPU平均使用率(单位:%)',u'CPU最大使用率(单位:%)',u'内存平均使用率(单位:%)',u'内存最大使用率(单位:%)',u'1分钟CPU最大负载']
    for i in range(0,len(row0)):
    	ws1.write(0,i,row0[i],xls_style('Times New Roman',220,True))
    #wb.save('demo1.xls')
    i = 1
    f = open(file,'r')
    for line in f.readlines():
        j = 0
        for item in line.split(';'):
            try:
                item=item.strip().decode('gbk')
            except UnicodeDecodeError:
                print i,j,item
                ws1.write(i,j,"NULL")
            else:
                ws1.write(i,j,item)
            j = j+1
        i = i+1
        f.close()        
    wb.save(path + os.sep + 'zmzblog_monthly_report.xls' )
txt2xls()

发表评论

电子邮件地址不会被公开。 必填项已用*标注

昵称 *