生成Excel表-python

#coding: utf-8
import xlsxwriter

workbook = xlsxwriter.Workbook('chart.xlsx') #创建excel文件
worksheet = workbook.add_worksheet()  #创建一个工作表对象
chart = workbook.add_chart({'type':'column'}) #创建一个图表对象
#定义数据表头列表
title = [u'业务名称',u'星期一',u'星期二',u'星期三',u'星期四',u'星期五',u'星期六',u'星期日',u'平均流量']
buname = [u'业务官网',u'新闻中心',u'购物频道',u'体育频道',u'亲自频道']  #定义频道名称
#定义5频道一周7天流量数据列表

data = [
    [120,198,109,198,198,167,158],
    [89,88,86,84,83,81,81],
    [120,198,109,198,198,167,158],
    [220,298,209,298,298,267,258],
    [75,73,70,67,69,60,63],
]

format = workbook.add_format()  # 定义format 格式对象
format.set_border(1) #定义format对象单元格边框加粗的格式

format_title = workbook.add_format() #定义format_title 格式对象
format_title.set_border(1) #定义对象单元格边框加粗(1像素)的格式
format_title.set_bg_color('#cccccc') #定义背景颜色

format_title.set_align('center')  #定义format_title 对象单元格居中对齐
format_title.set_bold() #定义format_title 对象单元格加粗的格式

format_ave = workbook.add_format()  # 定义format 格式对象
format_ave.set_bold(1)  # 定义对象单元格边框加粗(1像素)的格式
format_ave.set_num_format('0.00') # 定义对象单元格数字类别显示格式

# 下面分别以行或列写入方式将标题、业务名称、流量数据写入起初单元格,同时引用不同格式对象
worksheet.write_row('A1',title,format_title)
worksheet.write_column('A2',buname,format)
worksheet.write_row('B2',data[0],format)
worksheet.write_row('B3',data[1],format)
worksheet.write_row('B4',data[2],format)
worksheet.write_row('B5',data[3],format)
worksheet.write_row('B6',data[4],format)

#定义图表数据系列函数
def chart_series(cur_row):
    worksheet.write_array_formula('I'+cur_row,\
                                  '=AVERAGE(B'+cur_row+':H'+cur_row+')',format_ave) # 计算(AVERAGE函数)频道周平均流量
    chart.add_series({
        'categories':'=Sheet1!$B$1:$H$1',  #将“星期一至星期日”作为图表数据标签(x轴)
        'values':     '=Sheet1!$B$'+cur_row+':$H$'+cur_row, #频道一周所有数据操作为数据区域
        'line':       {'color':'black'},
        'name':       '=Sheet1!$B$'+cur_row
    })

for row in range(2,7):
    chart_series(str(row))
#chart.set_table()  # 设置X轴表格格式,本示例不启用
#chart.set_style(30) # 设置图表样式,本示例不启用
chart.set_size({'width':577,'height':287})  # 设置图表大小
chart.set_title({'name':u'业务流量周报图表'}) # 设置图表(上方)大标题
chart.set_y_axis({'name':'Mb/s'}) # 设置y轴(左图)小标题

worksheet.insert_chart('A8',chart) # 设置在A8单元格插入图片
workbook.close()  #关闭Excel文档














猜你喜欢

转载自blog.csdn.net/q947448283/article/details/84586554