package org.displaytag.export.excel; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.displaytag.render.HssfTableWriter; import org.displaytag.model.HeaderCell; import javax.servlet.jsp.JspException; import java.io.OutputStream; import java.io.IOException; /** * If you are doing an export, and do not know if the user would like a view that is grouped or a view that is raw, * just use this one; it will export one tab that is grouped, and one tab that is not. Override the getHssfTableWriter * method to change which HssfTableWriter is actually used. * @author andy * @see DefaultHssfExportView#getHssfTableWriter(org.apache.poi.hssf.usermodel.HSSFWorkbook) * Date: Nov 13, 2010 * Time: 8:46:29 AM */ public class HssfDoubleExportView extends DefaultHssfExportView { @Override public void doExport(OutputStream out) throws IOException, JspException { try { HSSFWorkbook wb = new HSSFWorkbook(); HssfTableWriter writer = getHssfTableWriter(wb); writer.setSetSheetName("Export"); writer.writeTable(this.model, "-1"); boolean hasGroups = false; for (HeaderCell cell : this.model.getHeaderCellList()) { if (cell.getGroup() > 0) { hasGroups = true; cell.setGroup(0); } } if (hasGroups) { writer.setSetSheetName("Data"); model.reset(); writer.writeTable(this.model, "-1"); } wb.write(out); } catch (Exception e) { throw new HssfGenerationException(e); } } }