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 package org.displaytag.export;
13
14 import org.apache.commons.lang.StringUtils;
15 import org.displaytag.model.TableModel;
16
17
18 /**
19 * Export view for excel exporting.
20 * @author Fabrizio Giustina
21 * @version $Revision: 1081 $ ($Author: fgiust $)
22 */
23 public class ExcelView extends BaseExportView
24 {
25
26 /**
27 * @see org.displaytag.export.BaseExportView#setParameters(TableModel, boolean, boolean, boolean)
28 */
29 public void setParameters(TableModel tableModel, boolean exportFullList, boolean includeHeader,
30 boolean decorateValues)
31 {
32 super.setParameters(tableModel, exportFullList, includeHeader, decorateValues);
33 }
34
35 /**
36 * @see org.displaytag.export.ExportView#getMimeType()
37 * @return "application/vnd.ms-excel"
38 */
39 public String getMimeType()
40 {
41 return "application/vnd.ms-excel"; //$NON-NLS-1$
42 }
43
44 /**
45 * @see org.displaytag.export.BaseExportView#getRowEnd()
46 */
47 protected String getRowEnd()
48 {
49 return "\n"; //$NON-NLS-1$
50 }
51
52 /**
53 * @see org.displaytag.export.BaseExportView#getCellEnd()
54 */
55 protected String getCellEnd()
56 {
57 return "\t"; //$NON-NLS-1$
58 }
59
60 /**
61 * @see org.displaytag.export.BaseExportView#getAlwaysAppendCellEnd()
62 * @return false
63 */
64 protected boolean getAlwaysAppendCellEnd()
65 {
66 return false;
67 }
68
69 /**
70 * @see org.displaytag.export.BaseExportView#getAlwaysAppendRowEnd()
71 * @return false
72 */
73 protected boolean getAlwaysAppendRowEnd()
74 {
75 return false;
76 }
77
78 /**
79 * Escaping for excel format.
80 * <ul>
81 * <li>Quotes inside quoted strings are escaped with a double quote</li>
82 * <li>Fields are surrounded by " (should be optional, but sometimes you get a "Sylk error" without those)</li>
83 * </ul>
84 * @see org.displaytag.export.BaseExportView#escapeColumnValue(java.lang.Object)
85 */
86 protected String escapeColumnValue(Object value)
87 {
88 if (value != null)
89 {
90 // quotes around fields are needed to avoid occasional "Sylk format invalid" messages from excel
91 return "\"" //$NON-NLS-1$
92 + StringUtils.replace(StringUtils.trim(value.toString()), "\"", "\"\"") //$NON-NLS-1$ //$NON-NLS-2$
93 + "\""; //$NON-NLS-1$
94 }
95
96 return null;
97 }
98
99 }