<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jan Blaha</title>
    <description>The latest articles on DEV Community by Jan Blaha (@jan_blaha).</description>
    <link>https://dev.to/jan_blaha</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F115241%2F1a48f39b-f1b9-49f6-98bb-8d90ada60777.jpg</url>
      <title>DEV Community: Jan Blaha</title>
      <link>https://dev.to/jan_blaha</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jan_blaha"/>
    <language>en</language>
    <item>
      <title>Crystal reports open source alternative</title>
      <dc:creator>Jan Blaha</dc:creator>
      <pubDate>Thu, 11 Apr 2019 15:39:52 +0000</pubDate>
      <link>https://dev.to/jan_blaha/replace-crystal-reports-modern-reporting-is-here-56cn</link>
      <guid>https://dev.to/jan_blaha/replace-crystal-reports-modern-reporting-is-here-56cn</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Who is this article for&lt;br&gt;
This article is written for software developers having issues with &lt;a href="https://www.crystalreports.com/" rel="noopener noreferrer"&gt;Crystal Reports&lt;/a&gt; and thinking about replacing old or implementing a new reporting layer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is Crystal Reports
&lt;/h2&gt;

&lt;p&gt;Crystal Reports is a reporting software currently marketed by &lt;a href="https://www.sap.com" rel="noopener noreferrer"&gt;SAP&lt;/a&gt;. It's primarily used for analytics and generating pdf, excel, word and other kinds of documents. It used to be the main reporting software on the market and especially .NET based developers use it still nowadays because of its Visual Studio integration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fka3japhyeoo92le0ixe3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fka3japhyeoo92le0ixe3.png" alt="crystal-designer" width="549" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Main issues
&lt;/h2&gt;

&lt;p&gt;The Crystal Reports caused me many times a deep frustration when I was endlessly searching hours for a solution on &lt;a href="https://stackoverflow.com/questions/tagged/crystal-reports?sort=newest&amp;amp;pageSize=50" rel="noopener noreferrer"&gt;stackoverflow&lt;/a&gt;. How to make this field look the way I want? How to calculate this form the way I want...? These are the typical question you can find there. I'll try now to pinpoint the biggest issues I have with Crystal Reports.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Shared styles and layouts&lt;/strong&gt;&lt;br&gt;
I want my reports to share themes and layouts. I know I can use sub-reports feature for some of this. However, I want full capabilities to style my reports separately and reuse them. Like I can do with css.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reports versioning and collaboration&lt;/strong&gt;&lt;br&gt;
The report templates are stored in some kind of binary &lt;code&gt;rpt&lt;/code&gt; files. This is impossible to version through common source control. It is also impossible to collaborate on with multiple developers because the file merge won't work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Long learning curve&lt;/strong&gt;&lt;br&gt;
The learning curve is just too long. Typically, there is a single developer in the team responsible for using Crystal Reports. This is not because it would be so difficult to understand, but because you need to learn tricks on how to convince the designer to work the way you want. The tricks you learn after many hours using Crystal Reports and browsing StackOverflow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Limiting designer&lt;/strong&gt;&lt;br&gt;
The designer is great for humans, but not for developers. It is way faster to do a "for loop" with some conditions than to click this out using a designer. In many cases, the report is limited by designer capabilities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Not an open source&lt;/strong&gt;&lt;br&gt;
The fact Crystal Reports is closed source software is very limiting. An experienced software developer is very often able to find an answer inside the library code when he gets stuck. There is typically no other help then to search on StackOverflow with Crystal Reports.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Active development and innovations&lt;/strong&gt;&lt;br&gt;
The last release of the Crystal Reports was in 2016. This is just a long time ago. I think there is a lot to do and I would expect there are new releases every few months. This isn't happening despite the thousands of active users and customers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What now
&lt;/h2&gt;

&lt;p&gt;I apologize for being so negative. The Crystal Reports is the legend with great features. Especially for the non-developers is the designer and data source selection a good way to go. However, as for the software developer, this wasn't good enough for me and I've decided to do reporting differently.&lt;/p&gt;

&lt;h2&gt;
  
  
  jsreport
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://jsreport.net" rel="noopener noreferrer"&gt;jsreport&lt;/a&gt; is reporting software which does its job differently then Crystal Reports.  In fact, it was originally developed, to solve the problems I had with Crystal Reports. Let's take it step by step.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy2hwggjmh4sbn8jhj49e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy2hwggjmh4sbn8jhj49e.png" alt="jsreport-editor" width="757" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Long learning curve&lt;/strong&gt;&lt;br&gt;
With jsreport, you don't need to learn a special designer or format. You simply code the report using the standards you know like html, css and javascript.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Shared styles and layouts&lt;/strong&gt;&lt;br&gt;
You can use css with the full support to style your reports. The layout of templates is implemented using javascript templating engines like &lt;a href="https://handlebarsjs.com/" rel="noopener noreferrer"&gt;handlebarsjs&lt;/a&gt;. This means you have unlimited possibilities to layout your reports. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Limiting designer&lt;/strong&gt;&lt;br&gt;
You don't get stuck with jsreport, because the designer isn't the limit. You code your reports and the only limit is your imagination.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Not an open source&lt;/strong&gt;&lt;br&gt;
It is an open source project &lt;a href="https://github.com/jsreport" rel="noopener noreferrer"&gt;hosted on github &lt;/a&gt;. You can always take a look on the code and find out what is wrong.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reports versioning and collaboration&lt;/strong&gt;&lt;br&gt;
jsreport by default stores templates  in text files on the file system. Typically, you see on the disk just &lt;code&gt;html&lt;/code&gt; , &lt;code&gt;js&lt;/code&gt;, &lt;code&gt;css&lt;/code&gt; and &lt;code&gt;json&lt;/code&gt; files. These are easy to version and you can simply add the jsreport templates folder to the source control like git.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Active development and innovations&lt;/strong&gt;&lt;br&gt;
jsreport is actively developed and maintained.  You can se on &lt;a href="https://jsreport.net/blog/" rel="noopener noreferrer"&gt;jsreport blog&lt;/a&gt; there are great new features coming every few months.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Get started with jsreport
&lt;/h3&gt;

&lt;p&gt;You can take a look on jsreport &lt;a href="https://jsreport.net/showcases/" rel="noopener noreferrer"&gt;showcases&lt;/a&gt;, run &lt;a href="https://playground.jsreport.net/" rel="noopener noreferrer"&gt;examples in the live playground&lt;/a&gt; and make your mind if you like the way it works. Then you can &lt;a href="https://jsreport.net/on-prem" rel="noopener noreferrer"&gt;download&lt;/a&gt; it and check the &lt;a href="https://jsreport.net/learn" rel="noopener noreferrer"&gt;documentation and tutorials&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxq45jtunlpozizvlg93.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxq45jtunlpozizvlg93.png" alt="jsreport-showcase" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This was a quick summary of the issues I had when working with Crystal Reports. &lt;a href="https://jsreport.net" rel="noopener noreferrer"&gt;jsreport&lt;/a&gt; solves these issues with a completely different approach and I recommend to check it out.&lt;/p&gt;

&lt;p&gt;If you have any questions about jsreport, please take a look on our &lt;a href="https://forum.jsreport.net" rel="noopener noreferrer"&gt;forum&lt;/a&gt; and fill them in.&lt;/p&gt;

</description>
      <category>reports</category>
      <category>pdf</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
