通过 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 列
我需要在 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 列