通过 JIRA 导出格式 Excel 工作表-(JIRA 自定义报告)

Format Excel sheets export by JIRA-(JIRA custom reports)

我需要在 jira 中生成包含转换时间跟踪详细信息的自定义报告。 此 jira plugin 可以生成时间跟踪详细信息。但我需要将这些时间跟踪详细信息添加到 jira 默认所有字段导出 report.without 复制粘贴我需要找到合并这些数据的方法的值。

jira默认所有字段报告

报告可以通过我上面提到的插件生成 (Sheet A)

我需要上述报告的数据 (Sheet B)

然后我需要将这个 table 合并到 jira default all field export report

我发现了什么

1.write宏代码

2.converting将这些数据转化为sql然后使用sql查询。

还有其他方法吗?或者我应该 select 以上选项?或者什么是实现这一目标的最简单方法?

将行旋转到列,或动态添加列称为旋转,这不是 SQL 标准的一部分,通常会让人头疼:-)
由于我在jira后面用的是oracle,所以只能给你一个oracle-specific的回答:

SELECT * FROM (
SELECT
    JI.ID AS ISSUEID,
    P.PNAME || '-' || JI.ISSUENUM AS PKEY,
    IST.PNAME AS ISSUESTATUS,
    CG.CREATED AS CHANGED,
    TO_CHAR(CI.NEWSTRING) AS NEWSTATUS
FROM JIRAISSUE JI
INNER JOIN ISSUESTATUS IST ON JI.ISSUESTATUS = IST.ID
INNER JOIN PROJECT P ON JI.PROJECT = P.ID
LEFT JOIN CHANGEGROUP CG ON CG.ISSUEID = JI.ID
INNER JOIN CHANGEITEM CI ON CI.GROUPID = CG.ID AND CI.FIELDTYPE = 'jira' AND CI.FIELD = 'status'
-- WHERE JI.ID = 278217
) PIVOT (MIN(CHANGED) FOR NEWSTATUS IN('Find Solution', 'Development Done'))

唯一的问题是,必须知道 "dynamic column" 部分(PIVOT 内的 IN 子句)。除非你使用 XML 模式...

在搜索了可能获得问题答案的方法后,我找到了使用宏解决此问题的方法。

第 1 步:我在插件生成的同一 Excel 工作簿中创建了一个名为 "Sheet B" 的新空工作 sheet。

第2步:为Sheet A编写宏代码,用于将数据生成到Sheet B`

Function FindColumn(StartColumn As Integer, EndColumn As Integer, WantedString As String) As Integer

Dim LastColumn As Integer
Dim ReturnValue As Integer

i = 0
ReturnValue = 0

    LastColumn = EndColumn - StartColumn
    Do While i <= LastColumn

    If (Worksheets("Sheet A").Cells(1, i + StartColumn) = WantedString) Then
        ReturnValue = i + StartColumn
        Exit Do
    End If
    i = i + 1
    Loop

    FindColumn = ReturnValue


End Function

Sub NewTime()

SetAll1to1ColumnsTime

End Sub

Sub SetAll1to1ColumnsTime()
Dim CurrentLine As Integer
Dim NROfColumns As Integer
Dim NROfLines As Integer
Dim Str As String
Dim Str2 As String
Dim Str3 As String


    NROfColumns = Worksheets("Sheet A").UsedRange.Columns.Count

    NROfLines = Worksheets("Sheet A").UsedRange.Rows.Count


    CurrentLine = 2

    Do While CurrentLine <= NROfLines


        Column = FindColumn(1, NROfColumns, "Issue Key")
        Worksheets("Sheet B").Cells(CurrentLine, 1).Value = Worksheets("Sheet A").Cells(CurrentLine, Column).Value

        Column = FindColumn(1, NROfColumns, "Status")
        Worksheets("Sheet B").Cells(CurrentLine, 2).Value = Worksheets("Sheet A").Cells(CurrentLine, Column).Value

        Column = FindColumn(1, NROfColumns, "Status")
        Str = Worksheets("Sheet A").Cells(CurrentLine, Column).Value

            If Str = "Development Done" Then

                Str2 = Worksheets("Sheet A").Cells(CurrentLine, 4).Value
                Worksheets("Sheet B").Cells(CurrentLine, 4).Value = Str2

            End If

            If Str = "Find Solution" Then

                Str3 = Worksheets("Sheet A").Cells(CurrentLine, 3).Value
                Worksheets("Sheet B").Cells(CurrentLine, 3).Value = Str3

            End If


        CurrentLine = CurrentLine + 1
    Loop


    End Sub

步骤3:Then我为生成的SheetB编写了一个宏代码,用于根据需要格式化数据。
使用宏代码生成Sheet B

这是SheetB

的宏代码
Sub mergeCategoryValues()
Dim lngRow As Long

With ActiveSheet
    lngRow = .Cells(65536, 1).End(xlUp).Row
    .Cells(1).CurrentRegion.Sort key1:=.Cells(1), Header:=xlYes

    Do
        If .Cells(lngRow, 1) = .Cells(lngRow - 1, 1) Then
            .Cells(lngRow - 1, 4) = .Cells(lngRow - 1, 4) & "" & .Cells(lngRow, 4)
            .Rows(lngRow).Delete
        End If

        lngRow = lngRow - 1
    Loop Until lngRow = 1
End With
End Sub

工作完成! Note:Do 不介意 B 列