Re: Reporting tool in Java
"Jujo" <iuio@wp.pl> writes:
Does anyone know a reporting tool in Java, which can load a
template (previously made in Word or other word processor, for
example) and fill in defined fields ? (inside the report are
some sophisticated features which cannot be achieved with
iReport + JasperReport)
With Microsoft? Word installed, one can use a COM brigde to
open Microsoft? Word and control it from within a Java
program to instantiate and print the template.
This way, one does not have to write Java code to parse and
interpret Microsoft? Word files.
Otherwise, in order to instantiate a custom template (not a
Microsoft? Word template) in Java one does not need a library
for simple cases.
public class Main
{
public static java.lang.String replace
( final java.lang.String template,
final java.util.Map<java.lang.String,java.lang.String> map )
{ final java.lang.StringBuilder list =
new java.lang.StringBuilder( "\\$(" );
for( final java.lang.String key: map.keySet() )
{ list.append( key ); list.append( "|" ); }
list.append( "[^\\s\\S])" );
java.util.regex.Pattern pattern =
java.util.regex.Pattern.compile( list.toString() );
java.util.regex.Matcher matcher = pattern.matcher( template );
final java.lang.StringBuffer stringBuffer = new java.lang.StringBuffer();
while( matcher.find() )
{ final java.lang.String string = matcher.group( 1 );
matcher.appendReplacement
( stringBuffer, map.get( string )); }
matcher.appendTail( stringBuffer );
return stringBuffer.toString(); }
public static void main( final java.lang.String[] args )
{ final java.util.Map<java.lang.String,java.lang.String> map =
new java.util.HashMap<java.lang.String,java.lang.String>();
map.put( "user", "Mary" );
map.put( "name", "Patricia" );
java.lang.System.out.println
( replace( "Hello $user, my name is $name.", map ) ); }}