1 /**
2 * Licensed under the Artistic License; you may not use this file
3 * except in compliance with the License.
4 * You may obtain a copy of the License at
5 *
6 * http://displaytag.sourceforge.net/license.html
7 *
8 * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
9 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
10 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
11 */
12
13 package org.displaytag.export.excel;
14
15 import java.io.IOException;
16 import java.io.OutputStream;
17
18 import javax.servlet.jsp.JspException;
19
20 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
21 import org.displaytag.Messages;
22 import org.displaytag.exception.BaseNestableJspTagException;
23 import org.displaytag.exception.SeverityEnum;
24 import org.displaytag.export.BinaryExportView;
25 import org.displaytag.model.TableModel;
26 import org.displaytag.render.HssfTableWriter;
27
28 /**
29 * Excel exporter using POI.
30 *
31 * @author Jorge L. Barroso
32 * @version $Revision$ ($Author$)
33 */
34 public class DefaultHssfExportView implements BinaryExportView
35 {
36 /**
37 * TableModel to render.
38 */
39 private TableModel model;
40
41 /**
42 * @see org.displaytag.export.BinaryExportView#doExport(java.io.OutputStream)
43 */
44 public void doExport(OutputStream out) throws IOException, JspException
45 {
46 try
47 {
48 HSSFWorkbook wb = new HSSFWorkbook();
49 new HssfTableWriter(wb).writeTable(this.model, "-1");
50 wb.write(out);
51 }
52 catch (Exception e)
53 {
54 throw new HssfGenerationException(e);
55 }
56 }
57
58 /**
59 * @see org.displaytag.export.ExportView#setParameters(org.displaytag.model.TableModel, boolean, boolean, boolean)
60 */
61 public void setParameters(TableModel model, boolean exportFullList,
62 boolean includeHeader, boolean decorateValues)
63 {
64 this.model = model;
65 }
66
67 /**
68 * @see org.displaytag.export.BaseExportView#getMimeType()
69 * @return "application/vnd.ms-excel"
70 */
71 public String getMimeType()
72 {
73 return "application/vnd.ms-excel"; //$NON-NLS-1$
74 }
75
76 /**
77 * Wraps POI-generated exceptions.
78 * @author Fabrizio Giustina
79 * @version $Revision$ ($Author$)
80 */
81 static class HssfGenerationException extends BaseNestableJspTagException
82 {
83 /**
84 * D1597A17A6.
85 */
86 private static final long serialVersionUID = 899149338534L;
87
88 /**
89 * Instantiate a new PdfGenerationException with a fixed message and the given cause.
90 * @param cause Previous exception
91 */
92 public HssfGenerationException(Throwable cause)
93 {
94 super(DefaultHssfExportView.class, Messages.getString("DefaultHssfExportView.errorexporting"), cause); //$NON-NLS-1$
95 }
96
97 /**
98 * @see org.displaytag.exception.BaseNestableJspTagException#getSeverity()
99 */
100 public SeverityEnum getSeverity()
101 {
102 return SeverityEnum.ERROR;
103 }
104 }
105 }