import  xlsxwriter,xlrd

'''
思路:
1.获取数据
2.整合数据
3.写入文件
'''
#筛选
def filt(category,table,filt_name=None,res=0):
ncol = table.ncols
for i in range(0,ncol):
col_value=set(table.col_values(i))
if category == table.col_values(i)[0]:
for j in table.col_values(i):
if filt_name == j:
res= res+1
break return res,col_value #写数据 i代表插入表格的起始位置
def write_data(category,i=1):
data_cate = list(filt(category,table1)[1])
data_cate.pop(data_cate.index(category))
data_child=[]
for cate_name in data_cate:
data_child.append(cate_name)
data_child.append(filt(category,table1,cate_name)[0])
i=i+1
worksheet.write_row("A{}".format(i),data_child)
data_child=[] #打开数据所在excel
data = xlrd.open_workbook("bug_list.xlsx")
table1 = data.sheets()[0] #填写表头
workbook = xlsxwriter.Workbook("report.xlsx")
worksheet = workbook.add_worksheet("测试报告")
heads1=["项目名称","bug数量"]
heads2=["开发","bug数量"]
heads3=["bug状态","bug数量"]
worksheet.write_row("A1",heads1)
worksheet.write_row("A10",heads2)
worksheet.write_row("A17",heads3) #填写具体数据
write_data("项目名称")
write_data("开发",10)
write_data("bug状态",17) #柱状图
chart1 = workbook.add_chart({"type":"column"})
chart1.add_series({
"name":"=测试报告!$B$1",
"categories":"=测试报告!$A$2:$A$4",
"values":"=测试报告!$B$2:$B$4"
}) chart1.set_title({"name":"柱状图"})
chart1.set_x_axis({"name":"项目名称"})
chart1.set_y_axis({"name":"bug数量"})
chart1.set_style(13)
worksheet.insert_chart("D5",chart1) #饼图
chart2= workbook.add_chart({"type":"pie"})
chart2.add_series({
"categories":"=测试报告!$A$11:$A$14",
"values":"=测试报告!$B$11:$B$14",
"points":[
{"fill":{"color":"red"}},
{"fill":{"color":"yellow"}},
{"fill":{"color":"blue"}},
{"fill":{"color":"green"}},
]
})
chart2.set_title({"name":"饼状图"})
chart2.set_style(10)
worksheet.insert_chart("D23",chart2)
workbook.close()

  


结果如图所示:

												

最新文章

  1. 格式化 float 类型,保留小数点后1位
  2. WordPress一键部署网站
  3. 优化JS加载时间过长的一种思路
  4. oracle---触发器总结
  5. Displaying Data in a Chart with ASP.NET Web Pages (Razor)
  6. node express 304 avoid
  7. 3.python基础补充(集合,collection系列,深浅拷贝)
  8. Topcoder Arena插件配置和训练指南
  9. UML类图常见关系总结
  10. Mysql CPU占用高的问题解决方法小结
  11. 提升单元测试体验的利器--Mockito使用总结
  12. java 虚拟机与并发处理几个问题简要(一)
  13. git使用详解
  14. Mysql配置优化,库表设计
  15. equalsIgnoreCase()和equals()的区别
  16. SQL笔记之SELECT语句
  17. export to excel
  18. 单点登录(SSO)原理与案例
  19. 如何在通用权限管理系统中集成log4net日志功能
  20. python实现单链表的翻转

热门文章

  1. 使用jconsole监控远程JVM
  2. 第5章 Cisco测试命令和TCP/IP连接故障处理
  3. Java Web文件下载
  4. linux下使用script和scriptreplay对命令行操作进行录像
  5. 机器视觉: LBP-TOP
  6. 【HNOI 2003】 激光炸弹
  7. P1491 集合位置 次短路
  8. 洛谷P3402 最长公共子序列
  9. vue项目打包之后首页白屏的问题
  10. 枚举类enum的values()方法