您的位置:首页 > 编程语言 > Python开发

redmine中使用python按人员分组统计问题入excel的自编写案例

2017-02-09 15:09 561 查看
import xlrd

from xlutils.copy import copy

class ByUserStatistics(object):

    #按人员分组统计入excel

    def __ByUserStati__(self,reportfilepath,db):

        cursor=db.cursor()

        sql='''

        select DISTINCT(CONCAT(u.lastname,u.firstname)),t.name  from issues iss

        LEFT JOIN users u on u.id=iss.assigned_to_id

        LEFT JOIN trackers t on t.id=iss.tracker_id

        GROUP BY u.login,t.name,iss.status_id;

        '''

        cursor.execute(sql)

        data_list=cursor.fetchall()

        bk=xlrd.open_workbook(reportfilepath)

        wb=copy(bk)

        wa=wb.get_sheet(1)

        for i in range(0,len(data_list)):

            wa.write(i+1,0,data_list[i][0])

            wa.write(i+1,1,data_list[i][1])

        wb.save(reportfilepath)

    #按人员分组统计问题入excel

    def __ByUserIssuesStati__(self,reportfilepath,db):

        cursor=db.cursor()

        sql='''

        select CONCAT(u.lastname,u.firstname),t.name,isst.name,count(*)  from issues iss

        LEFT JOIN users u on u.id=iss.assigned_to_id

        LEFT JOIN trackers t on t.id=iss.tracker_id

        LEFT JOIN issue_statuses isst on isst.id=iss.status_id

        GROUP BY u.login,t.name,iss.status_id;

        '''

        cursor.execute(sql)

        data_list=cursor.fetchall()

        bk=xlrd.open_workbook(reportfilepath)

        wb=copy(bk)

        wa=wb.get_sheet(1)

        sh=bk.sheet_by_name(u"按人员问题统计")

        nrows=sh.nrows

        for i in range(0,len(data_list)):

            if data_list[i][2]==u"新建":

                for j in range(1,nrows):

                    if data_list[i][0]==(sh.row_values(j)[0]or None) and data_list[i][1]==sh.row_values(j)[1]:

                        wa.write(j,2,data_list[i][3])

            elif data_list[i][2]==u"需求设计":

                for j in range(1,nrows):

                    if data_list[i][0]==(sh.row_values(j)[0]or None) and data_list[i][1]==sh.row_values(j)[1]:

                        wa.write(j,3,data_list[i][3])

            elif data_list[i][2]==u"需求评审":

                for j in range(1,nrows):

                    if data_list[i][0]==(sh.row_values(j)[0]or None) and data_list[i][1]==sh.row_values(j)[1]:

                        wa.write(j,4,data_list[i][3])

            elif data_list[i][2]==u"已分配":

                for j in range(1,nrows):

                    if data_list[i][0]==(sh.row_values(j)[0]or None) and data_list[i][1]==sh.row_values(j)[1]:

                        wa.write(j,5,data_list[i][3])

            elif data_list[i][2]==u"已分配(开发任务)":

                for j in range(1,nrows):

                    if data_list[i][0]==(sh.row_values(j)[0]or None) and data_list[i][1]==sh.row_values(j)[1]:

                        wa.write(j,6,data_list[i][3])

            elif data_list[i][2]==u"已完成(开发任务)":

                for j in range(1,nrows):

                    if data_list[i][0]==(sh.row_values(j)[0]or None) and data_list[i][1]==sh.row_values(j)[1]:

                        wa.write(j,7,data_list[i][3])

            elif data_list[i][2]==u"已修复":

                for j in range(1,nrows):

                    if data_list[i][0]==(sh.row_values(j)[0]or None) and data_list[i][1]==sh.row_values(j)[1]:

                        wa.write(j,8,data_list[i][3])

            elif data_list[i][2]==u"提交测试":

                for j in range(1,nrows):

                    if data_list[i][0]==(sh.row_values(j)[0]or None) and data_list[i][1]==sh.row_values(j)[1]:

                        wa.write(j,9,data_list[i][3])       

            elif data_list[i][2]==u"重新打开":

                for j in range(1,nrows):

                    if data_list[i][0]==(sh.row_values(j)[0]or None) and data_list[i][1]==sh.row_values(j)[1]:

                        wa.write(j,10,data_list[i][3])

            elif data_list[i][2]==u"申请否决":

                for j in range(1,nrows):

                    if data_list[i][0]==(sh.row_values(j)[0]or None) and data_list[i][1]==sh.row_values(j)[1]:

                        wa.write(j,11,data_list[i][3])      

            elif data_list[i][2]==u"已否决":

                for j in range(1,nrows):

                    if data_list[i][0]==(sh.row_values(j)[0]or None) and data_list[i][1]==sh.row_values(j)[1]:

                        wa.write(j,12,data_list[i][3])  

            elif data_list[i][2]==u"已关闭":

                for j in range(1,nrows):

                    if data_list[i][0]==(sh.row_values(j)[0]or None) and data_list[i][1]==sh.row_values(j)[1]:

                        wa.write(j,13,data_list[i][3])                       

            else:

                for j in range(1,nrows):

                    if data_list[i][0]==(sh.row_values(j)[0]or None) and data_list[i][1]==sh.row_values(j)[1]:

                        wa.write(j,14,data_list[i][3])

        wb.save(reportfilepath)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: