Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Data Days is here! Join us now for 60+ days of learning, challenges, and connection. Learn more

Reply
Ayman_Hezam
Regular Visitor

RTL Matrix Expansion Issue in SSRS

"Hi there! I'm facing a tricky issue with an SSRS Matrix. I'm using Report Builder (version 15.0.200) with SQL Server 2016.

The problem is that even though I set the Matrix Direction to RTL, the columns still expand to the right (like LTR) instead of expanding to the left. This causes the table to grow outside the report page.

I checked the Report Body and Report Properties to set them to RTL, but the 'Direction' property is completely missing from the properties pane (I only see Border, Fill, and Position).

Is there a way to force the RTL behavior?

Screenshot 2026-05-13 032836.pngScreenshot 2026-05-13 033022.pngScreenshot 2026-05-13 033319.pngScreenshot 2026-05-13 033149.png

12 REPLIES 12
v-saisrao-msft
Community Support
Community Support

Hi @Ayman_Hezam,

Have you had a chance to review the solution we shared by @oussamahaimoud? If the issue persists, feel free to reply so we can help further.

 

Thank you.

Hi @v-saisrao-msft,

Thank you for following up.

I have reviewed the solution shared earlier by @oussamahaimoud, but unfortunately the issue still persists. The matrix continues to expand off-page even after applying the suggested RTL settings.

Root Cause (as identified): SQL Server 2016's Report Builder has a bug/limitation where setting LayoutDirection = RTL on the Tablix alone is not sufficient. The matrix columns still physically expand to the right because the report body itself does not have a true RTL container. The missing "Direction" property in the Report Body is a known UI gap in version 15.0.200.

Even after updating Report Builder to version 15.1.30001.02, the problem remains unresolved.

I hope Microsoft can provide an official fix or workaround for this limitation.

Best regards, Ayman Hezam

Hi @Ayman_Hezam,

Thank you @oussamahaimoud, for your insights.

Since the issue continues even after upgrading Report Builder, it seems to be a product limitation or bug related to RTL rendering. I suggest raising this with the backend or product team so they can investigate and address the problem.
Issues - Microsoft Fabric Community

 

Thank you.

oussamahaimoud
Solution Sage
Solution Sage

Hi @Ayman_Hezam,

Hope you're doing well!

 

By looking at your screenshots, I can clearly see the issue. Your matrix is expanding to the right and going off-page, even though you've set the Tablix direction to RTL. This is a known limitation in SSRS/Report Builder, and here's how to fix it properly.

 

--> Root Cause :

SQL Server 2016's Report Builder has a bug/limitation where setting LayoutDirection = RTL on the Tablix alone is not enough. The matrix columns still physically expand to the right because the report body itself doesn't have a true RTL container. The "Direction" property missing from the Report Body is also a known UI gap in version 15.0.200.

 

--> Solution :

You should edit the RDL XML directly by doing it step by step :

1. Close Report Builder

2. Open your .rdl file with Notepad or VS Code

3. Find the <Report> tag near the top and add this if it's missing:

xml
<Language>ar-SA</Language>
<Direction>RTL</Direction>

4. Also find your <Tablix> element and make sure it has:

 
xml
<LayoutDirection>RTL</LayoutDirection>

5. Then find your <Body> tag and add:

xml
<Style>
  <Direction>RTL</Direction>
</Style>

6. Save and reopen in Report Builder.

 

Hope this helps. Feel free to ask me questions if needed, and don’t forget to give kudos (likes)Accept as Solution if this guidance worked for you. That's motivate me to keep helping.

 

Best regards,

Oussama (Data Consultant & Fabric's Expert)


  Did my response help you? Clicking Kudos is a small gesture that goes a long way, it encourages contributors and helps the community thrive!


Did I answer your question? Please mark my post as a Solution, it helps others find the answer faster.


Senior Data & BI Consultant · Microsoft Fabric & Power BI Specialist


Connect with me on LinkedIn

Hi Oussama,

Thanks again for your support. I’ve followed your steps carefully and here’s the outcome:

  • The <Language>ar-SA</Language> tag was added successfully under <Report>.

  • When I tried adding <Direction>RTL</Direction> under <Report>, Report Builder refused to open the file and showed the following error: “The report definition element 'Report' contains an invalid child element 'Direction' in namespace 'http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition'. Expected elements: Description, Author, AutoRefresh, InitialPageName, DataSources, DataSets, ReportParameters, ReportParametersLayout, Code, EmbeddedImages, Language, CodeModules, Classes, CustomProperties, Variables, DeferVariableEvaluation, ConsumeContainerWhitespace, DataTransform, DataSchema, DataElementName, DataElementStyle, ReportSections.”

  • The <LayoutDirection>RTL</LayoutDirection> tag is already present in my Tablix (I had added it earlier).

  • I also added <Style><Direction>RTL</Direction></Style> under <Body>, but the matrix still expands off-page and the issue remains unresolved.

I will attach the RDL file so you can review the structure directly and advise on the correct placement or alternative properties (e.g., WritingMode/TextAlign) that are supported in this schema.

https://drive.google.com/file/d/14EO-3b4-rguPuPJbFOWus0pQEylid7vp/view?usp=sharing

Best regards, Ayman

Hi @Ayman_Hezam,

 

Thanks for testing each step carefully and sharing the exact error message, that's really helpful!

You're right, I apologize for that. The <Direction> tag directly under <Report> is not valid in the 2016 RDL schema, and the error message you got confirms this perfectly. That was my mistake.

 

Regarding your reply, we know now that the issue is not about missing RTL tag, it's about how SSRS 2016 physically renders dynamic column groups. The columns will always expand to the right regardless of direction settings, which is a rendering engine limitation.

 

Since your column groups are dynamic (driven by EntityTypeOrder2 and EntityDisplayName2 as seen in your screenshots), here's what you should do:

 

1. Fix the matrix position in the RDL :

Open your RDL file in Notepad and find your Tablix <Top> and <Left> values inside <TablixLocation> or the Style block, and move the matrix to start from the far right of the body so new columns push leftward visually.

 

2. Reduce the body width :

In the RDL XML, find:

<ReportSections>
<ReportSection>
<Body>
<Width>

And make sure the Body width equals exactly your page width minus margins. A body wider than the printable area is often the hidden culprit.

 

For a standard A4 landscape with 2cm margins:

<Page>
<PageWidth>29.7cm</PageWidth>
<PageHeight>21cm</PageHeight>
<LeftMargin>2cm</LeftMargin>
<RightMargin>2cm</RightMargin>
</Page>

So your body width should be 25.7cm maximum.

 

3. paste the relevant XML sections

I'm not able to open external URLs or download files, so I can't review your RDL directly. However, I'd suggest you paste the relevant XML sections here, specifically:

 

  • The <Page> block
  • The <Body><Width> value
  • The <Tablix> opening tag with its Location/Size
  • Your Column Groups structure

 

This way I can pinpoint exactly where the overflow is happening and give you a precise fix rather than general guidance. So, I think you're very close to solving this because the structure is right, it's just a positioning and page sizing issue at this point!

 

Hope this helps. Feel free to ask me questions if needed, and don’t forget to Accept as Solution if this guidance worked for you. That's motivate me to keep helping.

 

Best regards,

Oussama (Data Consultant & Fabric's Expert)

 


  Did my response help you? Clicking Kudos is a small gesture that goes a long way, it encourages contributors and helps the community thrive!


Did I answer your question? Please mark my post as a Solution, it helps others find the answer faster.


Senior Data & BI Consultant · Microsoft Fabric & Power BI Specialist


Connect with me on LinkedIn

Hi Oussama,

Thanks for the great explanation. Here are the specific XML sections you requested from my RDL file:

1. The <Tablix> Opening Tag, Location, and Size:
<Tablix Name="Tablix4">
<Top>0cm</Top>
<Left>18.59796cm</Left>
<Height>20.48624cm</Height>
<Width>7.10204cm</Width>
<LayoutDirection>RTL</LayoutDirection>

2. My Column Groups Structure (<TablixColumnHierarchy>):
<TablixColumnHierarchy>
<TablixMembers>
<TablixMember>
<TablixHeader>
<Size>4.59808cm</Size>
</TablixHeader>
</TablixMember>
<TablixMember>
<Group Name="EntityTypeOrder2">
<GroupExpressions>
<GroupExpression>=Fields!EntityTypeOrder.Value</GroupExpression>
</GroupExpressions>
</Group>
<SortExpressions>
<SortExpression>
<Value>=Fields!EntityTypeOrder.Value</Value>
</SortExpression>
</SortExpressions>
<TablixHeader>
<Size>0.7205cm</Size>
</TablixHeader>
<TablixMembers>
<TablixMember>
<Group Name="EntityDisplayName2">
<GroupExpressions>
<GroupExpression>=Fields!EntityDisplayName.Value</GroupExpression>
</GroupExpressions>
</Group>
<TablixHeader>
<Size>3.87758cm</Size>
</TablixHeader>
<TablixMembers>
<TablixMember />
</TablixMembers>
</TablixMember>
<TablixMember>
<TablixHeader>
<Size>3.87758cm</Size>
</TablixHeader>
</TablixMember>
</TablixMembers>
</TablixMember>
</TablixMembers>
</TablixColumnHierarchy>

3. The <Body><Width> and <Page> block:
<Style>
<Border>
<Style>None</Style>
</Border>
<Direction>RTL</Direction>
</Style>
</Body>
<Width>25.7cm</Width>
<Page>
<PageWidth>29.7cm</PageWidth>
<PageHeight>21cm</PageHeight>
<LeftMargin>2cm</LeftMargin>
<RightMargin>2cm</RightMargin>
<TopMargin>0.5cm</TopMargin>
<BottomMargin>0.5cm</BottomMargin>
<ColumnSpacing>0.13cm</ColumnSpacing>
<Style />
</Page>

Based on your previous guidance, I have already adjusted the Body <Width> to 25.7cm and recalculated the Tablix <Left> property to 18.59796cm (25.7cm body width minus 7.10204cm tablix width) to align it to the far right.

I am currently using SSRS 2016, and I have more than 30 other reports that rely on this exact same dynamic matrix layout mechanism. Understanding this alignment logic is a huge lifesaver for my project! Could you please double-check these properties and confirm if my math and approach are fully correct before I replicate this fix across the rest of my reports?

Best regards,

Hi Oussama,

Thanks for the great explanation. Here are the specific XML sections you requested from my RDL file:

1. The <Tablix> Opening Tag, Location, and Size:
<Tablix Name="Tablix4">
<Top>0cm</Top>
<Left>18.59796cm</Left>
<Height>20.48624cm</Height>
<Width>7.10204cm</Width>
<LayoutDirection>RTL</LayoutDirection>

2. My Column Groups Structure (<TablixColumnHierarchy>):
<TablixColumnHierarchy>
<TablixMembers>
<TablixMember>
<TablixHeader>
<Size>4.59808cm</Size>
</TablixHeader>
</TablixMember>
<TablixMember>
<Group Name="EntityTypeOrder2">
<GroupExpressions>
<GroupExpression>=Fields!EntityTypeOrder.Value</GroupExpression>
</GroupExpressions>
</Group>
<SortExpressions>
<SortExpression>
<Value>=Fields!EntityTypeOrder.Value</Value>
</SortExpression>
</SortExpressions>
<TablixHeader>
<Size>0.7205cm</Size>
</TablixHeader>
<TablixMembers>
<TablixMember>
<Group Name="EntityDisplayName2">
<GroupExpressions>
<GroupExpression>=Fields!EntityDisplayName.Value</GroupExpression>
</GroupExpressions>
</Group>
<TablixHeader>
<Size>3.87758cm</Size>
</TablixHeader>
<TablixMembers>
<TablixMember />
</TablixMembers>
</TablixMember>
<TablixMember>
<TablixHeader>
<Size>3.87758cm</Size>
</TablixHeader>
</TablixMember>
</TablixMembers>
</TablixMember>
</TablixMembers>
</TablixColumnHierarchy>

3. The <Body><Width> and <Page> block:
<Style>
<Border>
<Style>None</Style>
</Border>
<Direction>RTL</Direction>
</Style>
</Body>
<Width>25.7cm</Width>
<Page>
<PageWidth>29.7cm</PageWidth>
<PageHeight>21cm</PageHeight>
<LeftMargin>2cm</LeftMargin>
<RightMargin>2cm</RightMargin>
<TopMargin>0.5cm</TopMargin>
<BottomMargin>0.5cm</BottomMargin>
<ColumnSpacing>0.13cm</ColumnSpacing>
<Style />
</Page>

Based on your previous guidance, I have already adjusted the Body <Width> to 25.7cm and recalculated the Tablix <Left> property to 18.59796cm (25.7cm body width minus 7.10204cm tablix width) to align it to the far right.

I am currently using SSRS 2016, and I have more than 30 other reports that rely on this exact same dynamic matrix layout mechanism. Understanding this alignment logic is a huge lifesaver for my project! Could you please double-check these properties and confirm if my math and approach are fully correct before I replicate this fix across the rest of my reports?

Best regards,

Hi @Ayman_Hezam,

 

Great news, your math and approach seems OK!

But, before walking through the confirmation so you feel confident before replicating this across your 30+ reports, please, Accept as Solution my last reply. That's motivate me to keep helping.


  Did my response help you? Clicking Kudos is a small gesture that goes a long way, it encourages contributors and helps the community thrive!


Did I answer your question? Please mark my post as a Solution, it helps others find the answer faster.


Senior Data & BI Consultant · Microsoft Fabric & Power BI Specialist


Connect with me on LinkedIn

Thank you so much! I will absolutely mark your reply as the accepted solution as soon as we quickly review the confirmation and ensure this completely resolves the direction and expansion issue. I just want to be 100% sure before replicating it across all 30+ reports. Looking forward to your guidance!

Hi @Ayman_Hezam,

 

You should watch one important thing :

Since your column groups are dynamic (EntityTypeOrder and EntityDisplayName), the number of columns at runtime is unpredictable. This means even with perfect positioning, if enough columns are generated, the matrix will still eventually overflow to the left and go off-page.

To protect yourself, keep this formula in mind for every report:

Safe Tablix Left = Body Width − Initial Tablix WidthMaximum Safe Columns = Body Width ÷ Average Column Width

In your case, with an average column width of roughly 0.72cm, you can safely fit around 35 dynamic columns before hitting the left margin.

 

Regarding duplicate +30 reports and before applying to each report, verify these four values every time:

Property What to Check
<PageWidth>Is it consistent? (29.7cm for A4 landscape)
<LeftMargin> + <RightMargin>Same margins across all reports?
<Body><Width>Must equal PageWidth − both margins
<Tablix Left>Must equal Body Width − Tablix Width

 

Finally, you are safe to replicate this pattern across your other reports.


  Did my response help you? Clicking Kudos is a small gesture that goes a long way, it encourages contributors and helps the community thrive!


Did I answer your question? Please mark my post as a Solution, it helps others find the answer faster.


Senior Data & BI Consultant · Microsoft Fabric & Power BI Specialist


Connect with me on LinkedIn

Hi Oussama,

Thank you for your detailed response and the formulas. Unfortunately, the issue still persists; the matrix is still expanding to the left and completely breaking the page boundaries (overflowing).

Please note that if we can find a working solution for this specific report, I will gladly accept it as the solution and replicate this pattern across all my other 30+ budget reports.

Regarding your checklist about page setups and margins, I actually have extensive, long-standing experience with Report Builder. I am well aware of how standard page overflows work (e.g., if the body width exceeds the page width by even an inch, it spills over to the next page). My page size, margins, and body widths are already perfectly calculated and aligned.

The core issue here is not the static design; it's the dynamic column group expansion itself. In SSRS 2016 with RTL, this matrix expansion completely ignores page constraints and breaks the layout.

However, I have a technical idea and want to get your expert opinion on it: What if we position the Tablix at the far left (Left = 0) during design time to give it the maximum room to expand, and then dynamically shift or move the Tablix to the right during runtime using a custom expression, padding manipulation, or VB.NET code based on the generated columns? Is there a known workaround or expression in SSRS that allows us to dynamically adjust the positioning or alignment of a Tablix at runtime?

Looking forward to your thoughts.

Best regards,

Helpful resources

Announcements
Fabric Data Days is here Carousel

Fabric Data Days 2026

Don't miss out on Data Days, June 15 through August 7. Learn Fabric, Power BI, SQL, AI and more.

May Power BI Update Carousel

Power BI Monthly Update - May 2026

Check out the May 2026 Power BI update to learn about new features.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.