Формат экспорта листов Excel с помощью JIRA-(пользовательские отчеты JIRA)

Мне нужно создать собственный отчет в jira с деталями отслеживания времени перехода. этот плагин jira может генерировать детали отслеживания времени. но мне нужно добавить эти данные отслеживания времени в отчет об экспорте всех полей jira по умолчанию. без копирования вставьте значения, которые мне нужны, чтобы найти способ объединить эти данные.

jira default все отчет поля

отчет может быть сгенерирован плагином, о котором я упоминал выше

какие мне нужны данные из вышеприведенного отчета (лист Б)

Затем мне нужно объединить эту таблицу в отчет об экспорте всех полей jira по умолчанию

что я нашел

1. напишите код макроса

2. Преобразование этих данных в SQL, а затем использовать SQL запросы.

Есть ли другие способы сделать это? или я должен выбрать выше вариант? или какой самый простой способ добиться этого?

2 ответа

Решение

После поиска, возможно, способов получить ответ на вопрос, я нашел способ решить эту проблему с помощью макросов.

Шаг 1: Я создал новый пустой рабочий лист под названием "Лист B" в той же рабочей книге Excel, созданной плагином.

Шаг 2: написать код макроса для листа A для генерации данных в лист 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: Затем я пишу код макроса для сгенерированного Листа B для форматирования данных, как мне нужно.
Сгенерированный лист B с использованием макрокодавведите описание изображения здесь

это код макроса для листа B

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

работа сделана! Примечание: не обращайте внимания на колонку B

введите описание изображения здесь

Вращение строк в столбцы или динамическое добавление столбцов называется поворотом и не является частью стандарта SQL и обычно сопряжено с постоянными головными болями:-)
Поскольку я использую оракула за джира, я могу дать вам только конкретный ответ оракула:

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'))

Единственная проблема заключается в том, что часть "динамический столбец" (предложение IN внутри PIVOT) должна быть известна. За исключением случаев, когда вы используете режим XML...

Другие вопросы по тегам