Forum Discussion

JamesKirkby's avatar
JamesKirkby
New Contributor III
4 years ago

Group Columns/Excel Outline in Columns on Cube Views

Hello:

 

Has anyone had any success with grouping columns in a cube view in a report linked to excel, or grouping them as they export? Of course in the data explorer version you can use the tree function and toggle the row expansion mode to get the intended effect, and in rows you have the excel outline settings you can play with. However, there doesn't seem to be a way to manage this using settings. And obviously if you format the cube view when linked them refreshed the column grouping goes away.

 

Interested to hear and thanks!

  • Hi James, 

    I did something similar lately.

    Like you mentioned, I am not able to group Column as well.

    But I am able to group Rows Dynamically by leveraging 3 components

    1. Row member: member.Tree [I believe member.TreeDescendants also work]

    2. Use RowE1IndentLevel +   ExcelOutlineLevel in formatting

    I have used following to make it dynamic

    if (RowE1IndentLevel = 0) Then
    ExcelOutlineLevel = 1
    Else if (RowE1IndentLevel = 1) Then
    ExcelOutlineLevel = 2
    Else if (RowE1IndentLevel = 2) Then
    ExcelOutlineLevel = 3
    Else if (RowE1IndentLevel = 3) Then
    ExcelOutlineLevel = 4
    Else if (RowE1IndentLevel = 4) Then
    ExcelOutlineLevel = 5
    Else
    ExcelOutlineLevel = 6
    End If

    3. In Default Cube Formatting

    ExcelExpandedOutlineLevelOnRows = 6

    ExcelMaxOutlineLevelOnRows = 6 (6 is max)

    As result, this is what you get in excel. best part if this is dynamic.

    Hope this helps.

     

  • Hi James, 

    I did something similar lately.

    Like you mentioned, I am not able to group Column as well.

    But I am able to group Rows Dynamically by leveraging 3 components

    1. Row member: member.Tree [I believe member.TreeDescendants also work]

    2. Use RowE1IndentLevel +   ExcelOutlineLevel in formatting

    I have used following to make it dynamic

    if (RowE1IndentLevel = 0) Then
    ExcelOutlineLevel = 1
    Else if (RowE1IndentLevel = 1) Then
    ExcelOutlineLevel = 2
    Else if (RowE1IndentLevel = 2) Then
    ExcelOutlineLevel = 3
    Else if (RowE1IndentLevel = 3) Then
    ExcelOutlineLevel = 4
    Else if (RowE1IndentLevel = 4) Then
    ExcelOutlineLevel = 5
    Else
    ExcelOutlineLevel = 6
    End If

    3. In Default Cube Formatting

    ExcelExpandedOutlineLevelOnRows = 6

    ExcelMaxOutlineLevelOnRows = 6 (6 is max)

    As result, this is what you get in excel. best part if this is dynamic.

    Hope this helps.

     

    • JamesKirkby's avatar
      JamesKirkby
      New Contributor III

      That's pretty cool. So if your tree structures go down to six levels, you can dynamically group your tree structures leveraging the hierarchy within the dimension itself. Is that the intended effect?

      • aneupane's avatar
        aneupane
        Contributor

        That's correct.....the indent level is picked from hierarchy indentation (provided by OS when .Tree is used). And we are using the indent value to generate the excel ExcelOutlineLevel.

    • CarolinaRuiz's avatar
      CarolinaRuiz
      New Contributor

      Hi James,
      I'm trying your code but does't work for member expansion. I'm using A#acoount.tree.
      Do you know a way to play with the ident level inside a tree?

      • JamesKirkby's avatar
        JamesKirkby
        New Contributor III

        Hi Carolina: 

        The code that aneupane references is not a member expansion, but rather, conditional formatting applied to a row with a .tree expansion, in addition to the default cube view formatting mentioned above. if you follow the steps, when you export the report to excel the outline levels will appear as mentioned. Let me know if that makes sense.

    • ASides's avatar
      ASides
      New Contributor II

      This looks like a great solution. Do you know if this functionality works when exporting to Excel (rather than using a Cube View connection)?

      • JamesKirkby's avatar
        JamesKirkby
        New Contributor III

        I think this only works when exporting. When you use a linked cube view connection I don't think it works.

  • ExcelExpandedOutlineLevelOnRows = 6 controls what level to show when cubeview is open.

    If ExcelExpandedOutlineLevelOnRows = 1; cubeview opens with Level 1 shown and others compressed like shown below.

     

     

    • CAIGuySeanF's avatar
      CAIGuySeanF
      Contributor

      This is great.  Question - there is no way to pull the tree reversed?  I know I can do tree decedents reversed to get the desired excel grouping (totals beneath), but that doesn't allow for me to collapse the tree in the client/app.  Any suggestions? 

  • Ashok's avatar
    Ashok
    New Contributor III

    we are using but see this wierd issue with .Tree rows. Last row does not ge grouped properly. has anyone seen it? is there any workaround? 

    • Ashok's avatar
      Ashok
      New Contributor III

       

      example where it does not group last row properly. 

    • WiskiOne's avatar
      WiskiOne
      New Contributor II

      Hi Ashok,

      I have experienced the same problem. My last row is a Total row, and this problem desappears for previous grouped rows. If it is not your case, I would try to add a blank row at the end (format: font an background color white).

      Let me know if that makes sense.

  • MarkBird's avatar
    MarkBird
    Contributor III

    Hi JamesKirkby 

    Appreciate this is an old post, but I've been struggling to get the outline's between excel and cube views to work properly and came across this.

    May have not been possible back then, but you can group columns in a similar way to grouping rows.

    Either manually apply the outline level to the Header Format of each column: E.g. 'ExcelOutlineLevelCol = 2'

    Or apply some logic like the ones mentioned below: "If (ColE1IndentLevel = 1) Then ExcelOutlineLevelCol = 2...."

    Another option that you could follow is to apply a naming convention to your columns and then apply something like this:

    If (ColName StartsWith 'C1_') Then
        ExcelOutlineLevelCol = 1,
    If (ColName StartsWith 'C2_') Then
        ExcelOutlineLevelCol = 2,
    End if

    Then you just need to set the following on the Default Header Format of your cube view:

    ExcelExpandedOutlineLevelOnCols = 1,
    ExcelMaxOutlineLevelOnCols = 6,