What happened to my column headers in SQL Server Reporting Services (SSRS) 2016?! This was the question I kept asking myself over and over again. It took some time, but eventually I figured it out, so in this blog post, I explain the problem and how I successfully created a vertical column header that works in any version of SSRS.
The report I was working on had a number of column headers, so in order to save space within the table, I made a couple of the columns just wide enough to display an asterisk (*). Doing so also meant that I needed to rotate the column header, so the text appeared vertical not horizontal. It looked great in all versions of SSRS and Visual Studio, except for SSRS 2016 and 2017 where it looked very unprofessional (see the screenshots below).
Visual Studio 2015
Given that this problem effected SSRS 2016 and later, and more importantly, it effected how I viewed the report in the SSRS interface, it meant that I couldn’t test the report within Visual Studio. Instead, I had to test the report within SSRS.
Normally I don’t deploy my SSRS reports directly to my SSRS server, but in this instance, I had to do just that. This also meant additional work because I first needed to setup my lab in order to deploy SSRS reports to my server. In case you want to do the same, check out my blog post, “How to Deploy SSRS Reports from Visual Studio to the SSRS Server.”
As I mentioned earlier, this issue took some time to troubleshoot. It was bugging me for a long time and the solution was not obvious. While searching for the answer, I found these official doc sites that list what changed between SSRS 2014 and SSRS 2016.
Unfortunately, not one of these articles addressed my column header problem.
I will not bore you with all of the troubleshooting and testing that I did over numerous days, so I will cut to the chase, as the saying goes, and take you straight to the answer.
The solution lies with the CanGrow, WritingMode and Size – Height values. Take a look at the screenshot below.
On the left-hand side you can see the values I used for my column headers in SSRS 2014 (red arrows).
On the right-hand side, after a lot of testing, you can see what values ended up working for my report in SSRS 2016 (purple arrows). By the way, these values also work with any version of SSRS.
SSRS 2014 and Below
If the CanGrow value is set to True, the WritingMode value is set to Vertical, and the Height size is too small for the text, then the Height size of the cell is automatically increased to match the text size limit.
SSRS 2016 and Above
In the same scenario, if CanGrow is set to True, the WritingMode is set to Vertical, and the Height size is too small for the text, something different happens. The Width of the cell and not the Height of the cell is automatically increased to match the text size limit. Obviously, this was not what I wanted.
You need to make the Height size bigger than the text size. How do you do this? Unfortunately, it’s a bit of a trial and error process. However, once you adjust the Height size to a larger value than the text size, the text will be displayed correctly in any version of SSRS.
I know, this sounds like a pain, but ultimately the end result is worth it. If you have any questions about column headers in SSRS 2016, please feel free to contact me at @GarthMJ.