WWindward Reports 3.1 is now available, adding support for Microsoft's new XML formats, WordML and SpreadsheetML, and the standard .XLS format. Windward Reports is available as a Java library and works by merging any XML, SQL or custom data source with a Microsoft Word report template that can be generated in PDF, .RTF, HTML, WordML, .XLS, SpreadsheetML, .TXT, or multipart-MIME-email format.
- Posted by: David Thielen
- Posted on: March 01 2005 11:05 EST
Windward 3.1's Word out function writes reports in WordML, the Microsoft XML format for Word 2003. Word 2003 can read and write the WordML format to provide a fully formatted Word document. With 3.1, anyone who needs a report formatted in WordML can quickly lay out, identify input data for, and generate a report.
Windward 3.1's Excel out function now provides two new file formats for use in Excel: SpreadsheetML, which is the Microsoft XML format for Excel, and the standard .XLS format.
Launched in 2002, Windward Reports is the only full-featured, robust J2EE/.NET reporting engine to use Microsoft Word as a layout tool. Any Word user can easily and securely create reports with almost no learning curve.
- we did something VERY similar by Luca Masini on March 02 2005 08:51 EST
- This looks like a great tool by R C on March 02 2005 10:48 EST
- You can do this with Open Office by Gabriel Emerson on March 02 2005 12:14 EST
- This looks interesting by Maksymilian Kowalczyk on March 03 2005 04:46 EST
- nice, but not really new by Jens Kleemann on March 03 2005 03:56 EST
If someone is interested we can make it open.
We are an Oracle based shop for a lot of stuff, and unfortunately reporting is one of them. The problem is that most of users want PDF and Excel formats, and the 10g reports server pretty much sucks at this point. My reports that worked in the 6i env. no longer work in the 10g env. So to be able to get a reporting tool that can generate word, pdf and xls files would be awesome.
Luca, if you could make it open I would be very interested in taking a look.
Could you please let me know what sort of issues that you are running into with Oracle Reports.
I work for Oracle...
You can contact me offline - firstname.lastname@example.org
I understand that you do have issues with some output format with Oracle Reports. Delimited output format has some limitations for large data output, which is why we recommend going for delimiteddata. But reports that used to run in 6i SHOULD work in the newer Reports release. I recommend that you contact Oracle Support. Such issues (reports used to run in a previous version) can certainly be escalated with Oracle Support, and they can help you find the solution. If you aren't getting a satisfactory solution from Oracle Support you can further escalate the issue to the product management team.
Oracle Reports team.
We have written software to do something similar. My approach was to have the reports written in Open Office and saved as an .sxw file. The user embeds FreeMarker variables which I expose in my app via a map with keys named in a certain way that reflects the datasource we use. My process then unzips the .sxw (it's a .zip archive) and runs Freemarker on the content.xml (where the actual text is stored). Then it
points a running instance of OpenOffice at the file via
its Java interface, and uses it to produce a report in Word. This process can also be used to produce .pdf or .rtf or indeed .sxw.
There are problems with this process, of course. You need to run OpenOffice in a virtual framebuffer on a headless Linux system. It chokes if you send two documents at once, so I queue them up in another thread and space them a certain number of seconds apart. And you have to be careful when typing variable not to introduce font switches mid-variable.
It works very well, though.
"Windward Studios is awarding an iPod for the best product review published on Windward Reports 3.1! Click here for details on how to win!"
You can work directly from OpenOffice if you keep it simple. Life gets very interesting if you have a forEach loop that is part of a table or crosses tables. Same with an if/else.
There are also a ton of other issues including pulling data from the datasource based on other tags (such as relative to a foreach you are in), properly propigating formatting for a foreach loop or an if that evaluates to false, etc.
If/when you find your approach running up against limitations it can't work around, please take a look at Windward Reports then.
thanks - dave
I'm definietely interested. Could you post some detais on what you did?
Sure, how can we share the codebase ?
We take an input RTF, in that RTF we allow the user to embed some tags we defined (similar to JSTL's tags).
Then we use Groovy templates to parse that RTF document with a schema like this:
1) All the RTF tags are passed as are to the output
2) What is between the start of the tag and the end of the tag is parsed with our RTF parser (done with a javacc grammar), and all formatting is removed
3) Then we generate (in a one-to-one procedure) the Groovy code that does the dynamic part
Then we have a Groovy Script and this can be used like any Groovy Script. You can bind any variable or bean, and it's REALLY flexible.
The word-input mechanisms can easily be implemented using jfo (http://www.northbit.de/index.php?lang=en§ion=jfo) with similar evtl. better quality. That api reads rtf (as created with word) and creates xsl-fo (as raw fo or as an xslt-stylesheet template) which can be further converted to PDF,... using FOP, XEP or other XSL-FO Converters.
We use this api in a german bank to allow for quicker XSL-FO Stylesheet development based on Word examples coming from the projects.
Reading the overview seems impressive, soon I will download and check with my own hands !!!