Home
Analytics
Excel Emitter - non xml?
the.root
Hello,
I am currently just using the webviewer part of birt to display some simple reports, but I also need to have it export as Excel so anyone in our company can easily download and manipulate the data. The problem I'm having is the emitter is exporting the report as a XML Excel sheet, under the extension .xls . I don't know about previous versions of office, but in 2010 whenever you try to open one of these XML .xls files it pops up with a warning saying basically "warning you are opening a file type that is different the file extension, are you sure you want to proceed?" I tried the tribix emitter replacement and it did the same thing, as it's actually a xml file too. I can't really use this solution with that prompt, and it needs to be a .xls extension to be presentable or I'd just rename it as .xml.
So I'm wondering if anyone has any solutions on how I can generate an actual .xls file or convert the generated .xml to .xls?
Thanks!
I'm not sure if Actuates Free Spreadsheet Designer can do it, it sounds like it can. I'm just not sure how easy it will be to incorporate it with my already built birt report.. I looked at several different php/java apps but I didn't really find any that worked right in converting xml > xls. I'm curious also about the Actuate Free Spreedsheet Java API - i just haven't found much documentation on it. Anyone have any suggestions or if anyone has any input on Actuates spreadsheet apps, let me know!
Thanks again
Find more posts tagged with
Comments
jeffmor
Hello,
There are xls and xlsx emitters exist.
Free:
- Tribix BIRT Emitters. It can export to binary xls.
Commercial:
- Actuate BIRT. Can export to both xls and xlsx
- Arctorus BIRT Emitters. Can export to xlsx and other MS Office 2007-2010 OpenXML formats
Regards, Jeff
johnw
As part of the contest that just ended, someone released a native xls emitter. Check in the devshare and market.
the.root
Thanks for the replies. When I used the Tribix emitter I still got the same error message as it was an XML Excel I thought. I'll have to check again, perhaps there's a way to change the output.
I liked Actuates Spreadsheet designer, but It's a shame it doesn't integrate with your Eclipse Designed rptdesign report, so I'd basically have to create the report in Eclipse for the webview, and then in the Birt Designer for XLS output. Also the documentation on it was really lacking, I couldnt figure out how to do much with the Java API, as I getting an iServer License just to host this would be illogical and expensive (the designer says it requires it otherwise, to interneper the designers soi files or something).
john - i'll look through the devshare and report back if i find a good solution.
The only other ways I found to generate an XLS was to use a perl libraries and create cucstom scripts per report to convert the two, and that doesn't really sound fun when its dozens of different reports :-(
If anyone else has any more suggestions, let me know!
Thanks!
jeffmor
Tribix creates binary XLS spreadsheets but they are not native for Excel 2010 and you will always get warnings.
So what is wrong with Arctorus BIRT Emitters? Did you try it? It creates native Excel files so you won't get any warnings or errors. It works with any rptdesign reports and exports directly from Eclipse reportviewer and from BIRT runtime.
the.root
<blockquote class='ipsBlockquote' data-author="'jeffmor'" data-cid="84696" data-time="1319999088" data-date="30 October 2011 - 11:24 AM"><p>
Tribix creates binary XLS spreadsheets but they are not native for Excel 2010 and you will always get warnings.<br />
<br />
So what is wrong with Arctorus BIRT Emitters? Did you try it? It creates native Excel files so you won't get any warnings or errors. It works with any rptdesign reports and exports directly from Eclipse reportviewer and from BIRT runtime.<br /></p></blockquote>
<br />
Ohh "Actorous" - to be honest I read your first post too fast and I thought it read Actuate, lol. Lack of sleep. I will check them out right now. Thanks!
Yaytay
I think there are two new ones that johnw alluded to, <a class='bbc_url' href='
http://www.birt-exchange.org/org/devshare/designing-birt-reports/1421-native-excel-emitter-plugin-for-birt/'>Ramesh's
in DevShare</a> and <a class='bbc_url' href='
http://www.spudsoft.co.uk/2011/10/the-spudsoft-birt-excel-emitters/'>mine</a>
; in <a class='bbc_url' href='
http://www.birt-exchange.com/be/marketplace/app-showcase/?app=102'>marketplace</a>
; (I may have put it in the wrong place, it is free :rolleyes: ).<br />
<br />
I haven't tried Ramesh's or Actuate's commercial offering, so I don't know how they compare.<br />
<br />
I wrote mine after being frustrated with Tribix and Arctorus trying too hard to match the formatting of the report, with the result that the spreadsheets look great, but don't actually have things in the right columns (and have lots of blank rows/columns).<br />
My spreadsheets aim to be more useful as spreadsheets, but as a result they are absolutely not pixel-perfect renditions of the report (I cannot handle nested tables at all well, because they don't make sense in spreadsheets).<br />
<br />
Tribix definitely doesn't produce the warning message when its output is opened in Excel, the fact that you were getting that message implies that you hadn't swapped out the default emitter correctly.
the.root
<blockquote class='ipsBlockquote' data-author="'Yaytay'" data-cid="84700" data-time="1320007161" data-date="30 October 2011 - 01:39 PM"><p>
I think there are two new ones that johnw alluded to, <a class='bbc_url' href='
http://www.birt-exchange.org/org/devshare/designing-birt-reports/1421-native-excel-emitter-plugin-for-birt/'>Ramesh's
in DevShare</a> and <a class='bbc_url' href='
http://www.spudsoft.co.uk/2011/10/the-spudsoft-birt-excel-emitters/'>mine</a>
; in <a class='bbc_url' href='
http://www.birt-exchange.com/be/marketplace/app-showcase/?app=102'>marketplace</a>
; (I may have put it in the wrong place, it is free :rolleyes: ).<br />
<br />
I haven't tried Ramesh's or Actuate's commercial offering, so I don't know how they compare.<br />
<br />
I wrote mine after being frustrated with Tribix and Arctorus trying too hard to match the formatting of the report, with the result that the spreadsheets look great, but don't actually have things in the right columns (and have lots of blank rows/columns).<br />
My spreadsheets aim to be more useful as spreadsheets, but as a result they are absolutely not pixel-perfect renditions of the report (I cannot handle nested tables at all well, because they don't make sense in spreadsheets).<br />
<br />
Tribix definitely doesn't produce the warning message when its output is opened in Excel, the fact that you were getting that message implies that you hadn't swapped out the default emitter correctly.<br /></p></blockquote>
<br />
<br />
Thanks for the detailed response!<br />
<br />
Tribix - I checked it out again. I deleted the 'org.eclipse.birt.report.engine.emitter.config_****.jar' and 'org.eclipse.birt.report.engin.emitter.excel.config_****.jar' from '/var/lib/tomcat-7/webapps/birt-viewer/WEB-INF/platform/plugins` directory, then copied into it the 'org.uguess.birt.report.engine.common_****.jar', and the 'org.uguess.birt.report.engine.emitter.xls_****.jar', then restarted tomcat. Testing through my web site (didn't bother to copy it and try it out through the eclipse directories), It definitely generates an XML file; which from the sounds of it, it shouldnt be an XML and should be a birnary XLS? Here's the header of the file it created..<br />
<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
<?xml version="1.0" encoding="UTF-8"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
</pre>
<br />
And when trying to open in msexcel2010, i get the following error: "The file you are trying to open, test.xls, is in a different format than specified by the extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?"<br />
<br />
BTW; It's being downloaded/generated just from a link to the `run?___report=****&__format=xls` not sure if that matters, maybe i have use a different format name?<br />
<br />
It sounds like I'm doing something wrong there - I'm just not sure what. The instructions just said I needed to delete those two jars and copy those two into the WEB-INF/platforms/plugins .. If anyone has any input what I might be missing there let me know!<br />
<br />
I haven't gotten around to trying Actorus just yet, will give it a shot tonight. <br />
<br />
Yaytay - I'll give your (SpudSoft) emitter a try too. <br />
<br />
I guess which ever one can format my specific reports the best works. Kind of sounds like the reasoning behind several different ones, which ever one works the best for you lol.<br />
<br />
I appreciate your response yaytay, and I will certainly let you know how it works out. Thanks for the work and your reply!<br />
<br />
Yaytay - you know I recalled coming across your emitter yesterday and I wasn't sure why I turned it down, but after looking it over, I now recall: It's for Birt 3.7. I am embarrassed to admit I'm using the old Birt 2.5.2 because its the highest version available for Eclipse 3.5.1 which again is unfortunately the highest version available for my linux distro I develop on. I can update it from 3rd parties but I never had any luck getting the stupid WebViewer working in eclipse when xulrunner split to 2.0 and went to webm. I haven't messed around with it in a while but maybe I'll try to uprade eclipse/birt and figure out the whole webviewer mess again so I can give yours a shot. However, you wouldn't happen to know if it works on anything other then 3.7?<br />
<br />
Thanks!
Yaytay
That XML is very odd, it really looks like it's still using the default emitter.
What distro are you using? I'll set up a VM and have a play.
I haven't tried my emitter on anything prior to 3.7, but I don't know of any reason why it wouldn't work and could probably be persuaded to fix any reasons that do show up - so give it a go.
Again, if you let me know your distro I'll try it.
the.root
<blockquote class='ipsBlockquote' data-author="'Yaytay'" data-cid="84704" data-time="1320040089" data-date="30 October 2011 - 10:48 PM"><p>
That XML is very odd, it really looks like it's still using the default emitter.<br />
What distro are you using? I'll set up a VM and have a play.<br />
<br />
I haven't tried my emitter on anything prior to 3.7, but I don't know of any reason why it wouldn't work and could probably be persuaded to fix any reasons that do show up - so give it a go.<br />
Again, if you let me know your distro I'll try it.<br /></p></blockquote>
<br />
Hmm, would I have to replace those jars anywhere else then that directory to get it to work?<br />
<br />
I'm just using a Gentoo build. I tried updating eclipse again but it always breaks the darn webviewer, I can't seem to get eclipse to use webm right. It's been in bugzilla for a while with no working fix (for me at least). I might just go ahead and use it despite of the lack of webview, lol.<br />
<br />
I'll let you know if it works on 2.5.2 or not though, no sense in you building a VM to test. Especially since it can take some time to build a Gentoo system :-) .<br />
<br />
Thanks!!<br />
<br />
<br />
EDIT:<br />
<br />
Ahh there was a third file the install directions were missing that needed to be deleted too. <br />
'org.eclipse.birt.report.engine.emitter.prototype.excel_****.jar' Also in the WEB-INF/platform/plugins dir. After deleting that, Tribix worked.<br />
<br />
<br />
<br />
EDIT AGAIN:<br />
<br />
Okay so I used your SpudSoft emitter. I started with a fresh plugin directory, I deleted the *engine.emitter.excel.config* and the *engine.emitter.prototype.excel* and copied your *spudsoft.birt.emitters.excel* to the directory (used your latest revision). Afterwards evertime I tried to export as format XLS I'd get<br />
<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
+ org.eclipse.birt.report.service.api.ReportServiceException: The output format xls is not supported.
</pre>
<br />
I checked the viewer.properties and it definitely had the xls entries, I added the ones for xlsx per your documentation and I got the same error. I then tried to call the emitter directly, using this appended url, and get the following error:<br />
<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
&__emitterid=uk.co.spudsoft.birt.emitters.excel&__format=xls
+ org.eclipse.birt.report.service.api.ReportServiceException: EmitterID uk.co.spudsoft.birt.emitters.excel for render option is invalid.
</pre>
<br />
Not sure if I'm missing a step there in setting that up right?
jeffmor
<blockquote class='ipsBlockquote' data-author="'Yaytay'" data-cid="84700" data-time="1320007161" data-date="30 October 2011 - 01:39 PM"><p>
I wrote mine after being frustrated with Tribix and Arctorus trying too hard to match the formatting of the report, with the result that the spreadsheets look great, but don't actually have things in the right columns (and have lots of blank rows/columns).<br /></p></blockquote>
<br />
Btw, we (Arctorus) gave up the Tribix'es idea to render pixel-perfect excel. We had nothing except complaints from customers about it. For huge reports it was always slow and required a lot of heap to store all tiny columns and rows used for margins formatting. And the most important it was almost not possible to post-process Excel documents. So since 3.0.0 release it's partially based on standard excel emitter and on our Documents library.<br />
<br />
Just tried your emitters. Very promising by description but unfortunately couldn't run it with BIRT runtime 3.7.1 and standard ProductCatalog demo report. There are logs for both xls and xlsx.<br />
<br />
Regards, Jeff
jeffmor
<blockquote class='ipsBlockquote' data-author="'the.root'" data-cid="84705" data-time="1320042085" data-date="30 October 2011 - 11:21 PM"><p>
I checked the viewer.properties and it definitely had the xls entries, I added the ones for xlsx per your documentation and I got the same error. I then tried to call the emitter directly, using this appended url, and get the following error:<br /></p></blockquote>
<br />
EmitterID should be<br />
"uk.co.spudsoft.birt.emitters.excel.XlsEmitter" for xls format<br />
"uk.co.spudsoft.birt.emitters.excel.XlsxEmitter" for xlsx
the.root
<blockquote class='ipsBlockquote' data-author="'jeffmor'" data-cid="84707" data-time="1320045353" data-date="31 October 2011 - 12:15 AM"><p>
EmitterID should be<br />
"uk.co.spudsoft.birt.emitters.excel.XlsEmitter" for xls format<br />
"uk.co.spudsoft.birt.emitters.excel.XlsxEmitter" for xlsx<br /></p></blockquote>
<br />
<br />
Thanks, per your suggestion I tried:<br />
<br />
&__emitterid=uk.co.spudsoft.birt.emitters.excel.XlsEmitter&__format=xls<br />
<br />
and still got: <br />
<br />
+ org.eclipse.birt.report.service.api.ReportServiceException: EmitterID uk.co.spudsoft.birt.emitters.excel.XlsEmitter for render option is invalid.<br />
<br />
<br />
Maybe its an issue with my outdated BIRT version :-/. I'll have to play around with it some more. I'll also check out your (Arctorus) emitters tomorrow, curious what benefit/features it might have..
jeffmor
I have tested SpudSoft and I'm afraid without changes it will work with 3.7.x only. We also have to offer separate emitter version for each major BIRT release 2.5, 2.6 and 3.7.
Regards, Jeff
Yaytay
<blockquote class='ipsBlockquote' data-author="'jeffmor'" data-cid="84709" data-time="1320049973" data-date="31 October 2011 - 01:32 AM"><p>
I have tested SpudSoft and I'm afraid without changes it will work with 3.7.x only. We also have to offer separate emitter version for each major BIRT release 2.5, 2.6 and 3.7.<br />
<br />
Regards, Jeff<br /></p></blockquote>
<br />
Jeff,<br />
You managed to make it work with the ProductCatalog report?<br />
I just tried it in the designer and it ran just fine (I was expecting it to make a total mess of the header, but it wasn't too bad, I'll have a go at making it better this evening - the uneven grid doesn't fit my model of translating directly to a spreadsheet).<br />
The error that you got seems to imply something environmental, how are you trying to run the report?<br />
I test within the designer, with some unit tests that use the ReportEngine directly, and within my own report server.<br />
<br />
As things stand my manifest is specifying report engine >3.7.0, which I could easily change, but I wonder what features I use that aren't in 2.5.<br />
<br />
Jim
jeffmor
<blockquote class='ipsBlockquote' data-author="'Yaytay'" data-cid="84711" data-time="1320051612" data-date="31 October 2011 - 02:00 AM"><p>
You managed to make it work with the ProductCatalog report?<br /></p></blockquote>
<br />
Jim,<br />
<br />
Yes, I exported ProductCatalog from designer but not from runtime.<br />
<br />
Just the list of problems I see.<br />
<br />
XLS<br />
1. Error when open workbook "File access error. Some number formats can be lost."<br />
2. Logo image is stretched.<br />
3. Lost information such us address from header and all model descriptions.<br />
4. Changed yellow background color similar to Tribix. POI issue?<br />
<br />
XLSX<br />
1. Error when open workbook "Workbook has content which can't be read", "Repaired records from /xl/styles.xml"<br />
2. There are several sheets. First one looks similar to XLS. Next sheets have 3 columns with information but width of these columns is by default. It can't be because of broken styles.xml since column width stored in sheetXX.xml<br />
<br />
Tried also <strong class='bbc'>SalesInvoice</strong> report but got NullPointerException<br />
<br />
Caused by: java.lang.NullPointerException<br />
at uk.co.spudsoft.birt.emitters.excel.ExcelEmitter.setCurrentCellContents(ExcelEmitter.java:802)<br />
at uk.co.spudsoft.birt.emitters.excel.ExcelEmitter.startData(ExcelEmitter.java:747)<br />
at org.eclipse.birt.report.engine.emitter.ContentEmitterUtil.startContent(ContentEmitterUtil.java:71)<br />
...<br />
<br />
<br />
To run it from runtime I use this code<br />
<br />
IReportDocument iReportDocument = engine.openReportDocument("reports/" + REPORT + ".rptdocument");<br />
IRenderOption options = new RenderOption();<br />
options.setOutputFormat("xls");<br />
options.setEmitterID("uk.co.spudsoft.birt.emitters.excel.XlsEmitter");<br />
options.setOutputFileName("output/" + REPORT + ".xls");<br />
IRenderTask renderTask = engine.createRenderTask(iReportDocument);<br />
renderTask.setLocale(Locale.US);<br />
renderTask.setRenderOption(options);<br />
renderTask.render();<br />
renderTask.close();<br />
<br />
Regards, Jeff
Yaytay
Thanks Jeff, that's really helpful (that's not sarcasm).
I uploaded a new version today that either fixes or improves those issues - there are still some problems with nested tables/grids but nothing should be lost now.
I have a plan for making a further improvement to nested tables/grid, but my fundamental design aim is to ensure that table rows/columns line up as they need to without having blank/merged row/columns all over the place - and that design aim doesn't like the idea of nested tables.
A work in progress
jeffmor
Hi,
Looks much better now and starts from runtime but sheets except the first one are still unformatted.
By my opinion removing ALL merged columns is not the right way. I think it's better to find golden mean an minimize merging as much as possible. In your case it's impossible to export 2 and more tables with different number of columns to a single sheet. Example of the issue is SalesInvoice. You have to export table with customer/order details as text.
Btw, installation instructions
https://bitbucket.org/yaytay/spudsoft-birt-excel-emitters/wiki/Home
are not publicly available. At least, I couldn't open it even after registration on bitbucket.
Regards, Jeff
Yaytay
Hi Jeff,<br />
<blockquote class='ipsBlockquote' data-author="'jeffmor'" data-cid="84919" data-time="1320467666" data-date="04 November 2011 - 09:34 PM"><p>
Looks much better now and starts from runtime but sheets except the first one are still unformatted.<br /></p></blockquote>
That's my biggest concern - there shouldn't be any sheets except the first for either the ProductCatalog or the SalesInvoice.<br />
The emitter uses page-break-pagination, which works correctly from within the designer but does not work if separate Run and Render tasks are used.<br />
I've blogged about that <a class='bbc_url' href='
http://www.spudsoft.co.uk/2011/10/lsned46-birt-page-break-pagination-broken/'>here</a>
, and filed a <a class='bbc_url' href='
https://bugs.eclipse.org/bugs/show_bug.cgi?id=362245'>bug</a>
, but that should result in no pagination at all not too much pagination.<br />
Can you think of anything that might help me repro the problem?<br />
<br />
<br />
<blockquote class='ipsBlockquote' data-author="'jeffmor'" data-cid="84919" data-time="1320467666" data-date="04 November 2011 - 09:34 PM"><p>
By my opinion removing ALL merged columns is not the right way.<br /></p></blockquote>
I don't <em class='bbc'>remove</em> merged columns, I just don't add any more.<br />
So it is possible to design a report with two tables with different numbers of columns on a single sheet and to have them line up.<br />
What is not currently possible is the block in the SalesInvoice, where a nested grid is actually needed (because it needs to work within the group header).<br />
I have a theory to solve that, but I haven't coded it yet (haven't quite worked out how to
).<br />
<br />
What will never be possible is to have two tables next to each other horizontally (left and right) with different numbers of rows in them without reverting to RichText layout.<br />
My argument is that such a report is not a very spreadsheety report and is better off handled with another emitter.<br />
<br />
<br />
<blockquote class='ipsBlockquote' data-author="'jeffmor'" data-cid="84919" data-time="1320467666" data-date="04 November 2011 - 09:34 PM"><p>
Btw, installation instructions <a class='bbc_url' href='
https://bitbucket.org/yaytay/spudsoft-birt-excel-emitters/wiki/Home'>https://bitbucket.org/yaytay/spudsoft-birt-excel-emitters/wiki/Home</a>
; are not publicly available. <br /></p></blockquote>
Thanks, it should work now.<br />
I'm kinda new to all this sharing stuff
<br />
<br />
Jim
jeffmor
<blockquote class='ipsBlockquote' data-author="'Yaytay'" data-cid="84925" data-time="1320485343" data-date="05 November 2011 - 02:29 AM"><p>
That's my biggest concern - there shouldn't be any sheets except the first for either the ProductCatalog or the SalesInvoice.<br />
...<br />
Can you think of anything that might help me repro the problem?<br /></p></blockquote>
<br />
Do you mean you can't reproduce it? When I export report from runtime everything is fine but if I export it from designer then there are several pages with wrong columns width. Only width, all other formatting is okay.<br />
<br />
What happens if you set HTML_PAGINATION property? In our case it works fine although some difference between documents exported from designer and runtime really exists.<br />
<br />
Regards, Jeff
Yaytay
<blockquote class='ipsBlockquote' data-author="'jeffmor'" data-cid="84987" data-time="1320691481" data-date="07 November 2011 - 11:44 AM"><p>
Do you mean you can't reproduce it? <br />
<br />
What happens if you set HTML_PAGINATION property? In our case it works fine although some difference between documents exported from designer and runtime really exists.<br />
<br />
Regards, Jeff<br /></p></blockquote>
Yes, I can't reproduce it.<br />
<br />
HTML_PAGINATION makes a mess of the spreadsheetiness of reports, so I don't use it myself, however a couple of tests show it behaving as I'd expect - breaks wherever the layout engine chooses with headers repeated on the new sheet (and column widths the same on every sheet).<br />
<br />
I wouldn't be surprised to find something going wrong with HTML_PAGINATION, but I can't find anything.<br />
<br />
I'm hesitant to ask you to do anything more when you've already been so helpful, but have you tried with the latest version (0.3.0.201111071736 or 0.3.0.201111041030).<br />
<br />
Thanks.<br />
Jim
jeffmor
<blockquote class='ipsBlockquote' data-author="'Yaytay'" data-cid="84990" data-time="1320695122" data-date="07 November 2011 - 12:45 PM"><p>
I'm hesitant to ask you to do anything more when you've already been so helpful, but have you tried with the latest version (0.3.0.201111071736 or 0.3.0.201111041030).<br /></p></blockquote>
<br />
I have exported reports with the latest version. Actually, I don't see any visible difference. Do you use standard ProductCatalog? I set Fixed Layout in the report properties instead of Auto Layout. May be that is the problem. Please find attached my test reports and generated documents.<br />
<br />
Regards, Jeff
jeffmor
Auto Layout also doesn't help. I will try to build your emitter from sources and check what is wrong.
Jeff
Yaytay
<blockquote class='ipsBlockquote' data-author="'jeffmor'" data-cid="85014" data-time="1320733903" data-date="07 November 2011 - 11:31 PM"><p>
Auto Layout also doesn't help. I will try to build your emitter from sources and check what is wrong.<br />
<br />
Jeff<br /></p></blockquote>
Ah, at last I have a sort-of repro.<br />
The problem was that the ProductCatalog as found in the BIRT sources has a filter that limits MSRP to between $95 and $100, so everything fitted on a single page.<br />
Taking away that filter gives me a report on three pages (not twelve) but the column widths are screwed up on the subsequent pages - so I have something to work on.<br />
Thanks again.<br />
Jim
Yaytay
I've worked out what's happening with the column widths.
On the first sheet the column widths are determined by the width of the only columns/cells/contents that specify an absolute width: i.e. the header.
I explicitly don't take any notice of page size, so any percentage widths have to also be ignored.
As a result the columns have nothing to specify their widths - this is also seen on the third column on the first sheet (which has default width and thus not enough space to fit the value in).
It's tempting, oh so tempting
, to set the column widths so that they fit their contents, but it's so common to have headings in the first column that are expected to overrun into later columns that I've avoided doing so.
It's more important to me that it always be possible to get the spreadsheets to look the way that one wants than for them to look good with most reports - but maybe using auto-fit widths as a backup if there is no absolute measurement available is a reasonable compromise that doesn't constrain.
I could also modify the ProductCatalog so that it did come out nicely, but that would be hiding the point that in some cases report designs need modifying to get the best from my emitter.
I do need to solve the issue of the sub-grid in the SalesInvoice report - that is a situation where currently my emitter cannot do something at all, but I also want to do a major refactor to tidy things up first.