xlsxwriter使用实例--网站业务流量报表
安装模块
tar zxf XlsxWriter-1.0.4.tar.gz
cd XlsxWriter-1.0.4
python setup.py install
官网参考示例http://xlsxwriter.readthedocs.io/chart_examples.html
#!/usr/bin/env python # -*- coding: utf-8 -*- import xlsxwriter workbook=xlsxwriter.Workbook('chart.xlsx') worksheet=workbook.add_worksheet() chart=workbook.add_chart({'type':'column'}) chart1=workbook.add_chart({'type':'line'}) chart2=workbook.add_chart({'type':'column'}) line_chart2=workbook.add_chart({'type':'line'}) chart3=workbook.add_chart({'type':'line'}) chart4=workbook.add_chart({'type':'pie'}) title=[u'业务名称',u'星期一',u'星期二',u'星期三',u'星期四',u'星期五',u'星期六',u'星期日',u'平均流量'] buname=[u'业务官网',u'新闻中心',u'购物频道',u'体育频道',u'亲子频道'] data = [ [150,152,158,149,155,145,148], [89,88,95,93,98,100,99], [201,200,198,175,170,198,195], [75,77,78,78,74,70,79], [88,85,87,90,93,88,84] ] format=workbook.add_format() format.set_border(1) title_format=workbook.add_format() title_format.set_border(1) title_format.set_bg_color('#cccccc') title_format.set_align('center') title_format.set_bold() ave_format=workbook.add_format() ave_format.set_border(1) ave_format.set_num_format('0.00') worksheet.write_row('A1',title,title_format) 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_formula('I'+cur_row,'=AVERAGE(B'+cur_row+':H'+cur_row+')',ave_format) chart.add_series({ 'categories':'=Sheet1!$B$1:$H$1', 'values':'=Sheet1!$B$'+cur_row+':$H$'+cur_row, 'line':{'color':'black'}, 'name':'=Sheet1!$A$'+cur_row, }) for row in range(2,7): chart_series(str(row)) chart1.add_series({ 'categories':'=Sheet1!$A$2:$A$6', 'values':'=Sheet1!$I$2:$I$6', 'marker':{'type':'diamond','size':7,'color':'green'}, 'data_labels':{'value':'True'}, 'line':{'color':'blue'}, 'name':u'平均流量分布' }) chart2.add_series({ 'categories':'=Sheet1!A2:A6', 'values':'=Sheet1!B2:B6', 'line':{'color':'blue'}, 'name':u'周一流量' }) line_chart2.add_series({ 'categories':'=Sheet1!A2:A6', 'values':'=Sheet1!I2:I6', 'marker':{'type':'diamond','size':7}, 'data_labels':{'value':'True'}, 'line':{'color':'blue'}, 'name':u'平均流量分布' }) chart2.combine(line_chart2) chart3.add_series({ 'categories':'=Sheet1!B1:H1', 'values':'=Sheet1!B2:H2', 'name':u'业务官网流量' }) chart3.add_series({ 'categories':'=Sheet1!B1:H1', 'values':'=Sheet1!B3:H3', 'name':u'新闻中心流量' }) chart3.add_series({ 'categories':'=Sheet1!B1:H1', 'values':'=Sheet1!B4:H4', 'name':u'购物频道流量' }) chart3.add_series({ 'categories':'=Sheet1!B1:H1', 'values':'=Sheet1!B5:H5', 'name':u'体育频道流量' }) chart3.add_series({ 'categories':'=Sheet1!B1:H1', 'values':'=Sheet1!B6:H6', 'name':u'亲子频道流量' }) chart4.add_series({ 'categories':'=Sheet1!A2:A6', 'values':'=Sheet1!I2:I6', 'data_labels':{'value':'True'}, 'name':u'平均流量分布' }) chart.set_size({'width':577,'height':287}) chart.set_title({'name':u'业务流量报表'}) chart.set_y_axis({'name':'Mb/s'}) chart1.set_size({'width':577,'height':287}) chart1.set_title({'name':u'业务流量报表'}) chart1.set_y_axis({'name':'Mb/s'}) chart2.set_size({'width':577,'height':287}) chart2.set_title({'name':u'业务流量报表'}) chart2.set_y_axis({'name':'Mb/s'}) chart3.set_size({'width':577,'height':287}) chart3.set_title({'name':u'业务流量报表'}) chart3.set_y_axis({'name':'Mb/s'}) chart4.set_size({'width':577,'height':287}) chart4.set_title({'name':u'业务流量报表'}) chart4.set_y_axis({'name':'Mb/s'}) worksheet.insert_chart('A8',chart) worksheet.insert_chart('K8',chart1) worksheet.insert_chart('A24',chart2) worksheet.insert_chart('K24',chart3) worksheet.insert_chart('A40',chart4) workbook.close()
python chart.py
运行结果 生产chart.xlsx文件