Skip to content

Instantly share code, notes, and snippets.

@ivanursul
Created March 25, 2015 14:57
Show Gist options
  • Select an option

  • Save ivanursul/efa21b83ceefa2f71757 to your computer and use it in GitHub Desktop.

Select an option

Save ivanursul/efa21b83ceefa2f71757 to your computer and use it in GitHub Desktop.
CustomDocXExporter.java for www.ivanursul.com
package org.jasper.exporter;
import org.jasper.generator.DocxGenerator;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReportsContext;
import net.sf.jasperreports.engine.export.ooxml.JRDocxExporter;
public class CustomDocXExporter extends JRDocxExporter {
public CustomDocXExporter() {
super();
}
public CustomDocXExporter(final JasperReportsContext jasperReportsContext) {
super(jasperReportsContext);
}
@Override
public void exportReport() throws JRException {
JasperPrint print = (JasperPrint) getParameter(JRExporterParameter.JASPER_PRINT);
String exporterClassName = print.getProperty("net.sf.jasperreports.export.docx.exporter.class");
System.out.println("Docx Exporter class name property: " + exporterClassName);
if (exporterClassName != null) {
System.out.println("Using custom docx4j report exporter");
exportCustomReport(exporterClassName, print);
} else {
System.out.println("Using standard docx exporter");
super.exportReport();
}
}
@SuppressWarnings("unchecked")
private void exportCustomReport(final String exporterClassName, final JasperPrint print) {
try {
Class<DocxGenerator> clz = (Class<DocxGenerator>) Class.forName(exporterClassName);
DocxGenerator generator = clz.newInstance();
generator.generate(parameters);
} catch (Exception e) {
// TODO : Add Logger.
System.out.println(e);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment