Yep,
As Daniel mention, there has been some brainstorming around the project...
We were also thinking along the lines of the PDF support where there
are custom tags that
expose functionality of an underlying library and then the final
byte[] is hung in a DocumentStore etc.
I have good experiences with
http://jexcelapi.sourceforge.net/ and it
is the most feature-complete and performant (more so than POI)
library that I'm aware of.
The basic usage could look like
<e:workbook value="#{personlist}" var="person">
<e:column>
<e:cell value="#{person.name}"/>
</e:column>
</e:workbook>
Where we could go with library default values, working like a
dataTable (UIData? Daniel is the tag-person here ;-))
More complex, optional cases could then look like
<e:workbook
protected="true"
<e:workbookSettings
arrayGrowSize="1000"
autoFilterDisabled="true"
cellValidationDisabled="true"
characterSet="1"
drawingsDisabled="true"
encoding="utf-8"
excelDisplayLanguage="fi"
excelRegionalSettings="fi"
formulaAdjust="true"
GCDisabled="true"
ignoreBlanks="false"
intialFileSize="100000"
locale="fi_fi"
mergedCellChecking="false"
namesDisabled="true"
propertySets="false"
rationalization="false"
supressWarnings="true"
temporaryFileDuringWriteDirectory="c:\\temp"
useTemporaryFileDuringWrite="true"/>
<e:sheetSettings
paperSize="a4"
orientation="landscape"
sheetName="data"/>
<e:column width="30">
<f:facet name="header">
<e:cell/>
</f:facet>
<e:cell
value="#{person.age}"
type="number"
formatMask="#00"
alignment="left"
verticalAlignment="bottom"
orientation="vertical"
indentation="5"
shrinkToFit="true"
wrap="true"
locked="true"
comment="No comment">
<e:background
color="black"
pattern="grey_25"/>
<e:border
type="bottom"
lineStyle="dotted"
color="brown"/>
<e:cellFeatures>
</e:cellFeatures>
<e:font
name="Times New Roman"
pointSize="12"
bold="true"
italic="true"
color="red"
struckout="false"
underlineStyle="single"
scriptStyle="superscript"/>
</e:cell>
</e:column>
</e:workbook>
Exposing pretty much everyting JExcelAPI has to offer. Cell definition
would also be cascading so you can modify it on workbook-level
and then override some attributes for specific columns.
Feedback is welcome!
Nik