Source Code Cross Referenced for GenericExcelOutput.java in  » J2EE » Dinamica » dinamica » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » J2EE » Dinamica » dinamica 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


001:        package dinamica;
002:
003:        import org.apache.poi.hssf.usermodel.*;
004:        import electric.xml.*;
005:
006:        /**
007:         * Genera un archivo excel (Apache POI) con el contenido de un recordset,
008:         * se basa en una clase generica del framework. En general solo debe
009:         * implementar el metodo "createWorkbook". Esta clase es generica lee del 
010:         * config.xml un conjunto de elementos para imprimir las columnas y filas.
011:         * Se definen elementos en el config.xml como en el ejemplo:
012:         * <xmp>
013:         * <!--Elementos que recibe la clase generica de excel-->
014:         *	<excel recordset="query.sql">
015:         *		<!--Elementos para definir los campos y columnas-->
016:         *		<col id="col1" type="varchar" label="Columna 1"/>
017:         *		<col id="col2" type="integer" label="Columna 2" mask="#,###,##0"/>
018:         *		<col id="col3" type="double" label="Columna 3" mask="#,###,##0.00"/>
019:         *		<col id="col4" type="integer" label="Columna 4"/>
020:         *		<col id="col5" type="double" label="Columna 5"/>
021:         *		<col id="col6" type="date" label="Columna 6" mask="dd-MM-yyyy"/>
022:         *	</excel>
023:         *</xmp>
024:         * <br><br>
025:         * Actualizado: 2008-01-07<br>
026:         * Framework Dinamica - Distribuido bajo licencia LGPL<br>
027:         * @author Martin Cordova y Asociados C.A.
028:         */
029:
030:        public class GenericExcelOutput extends AbstractExcelOutput {
031:
032:            /**
033:             * Crear un workbook para exportar un recordset como un archivo excel
034:             * @param data Data object passed by the Transaction object to this Output object 
035:             * @return Workbook
036:             * @throws Throwable
037:             */
038:            public HSSFWorkbook createWorkbook(GenericTransaction data)
039:                    throws Throwable {
040:
041:                //crear workbook y una hoja
042:                HSSFWorkbook wb = new HSSFWorkbook();
043:                HSSFSheet sheet = wb.createSheet("Reporte");
044:
045:                //codigo que lee los nombres de las columnas, campos y recordset del config.xml
046:                Document doc = getConfig().getDocument();
047:                Elements cols = doc.getRoot().getElements(new XPath("//col"));
048:                Elements recordset = doc.getRoot().getElements(
049:                        new XPath("//excel"));
050:
051:                //obtener recordset de data
052:                Recordset rs = data.getRecordset(recordset.next().getAttribute(
053:                        "recordset"));
054:                rs.top();
055:
056:                //encabezados comienzan en el row 0
057:                HSSFRow row = sheet.createRow((short) 0);
058:
059:                //contador para el número de columnas
060:                int countCol = 0;
061:
062:                //obtener todos los label del config.xml
063:                while (cols.hasMoreElements()) {
064:                    row.createCell((short) countCol).setCellValue(
065:                            new HSSFRichTextString(cols.next().getAttribute(
066:                                    "label")));
067:                    countCol++;
068:                }
069:
070:                //crear recordset para contener los elementos del config.xml
071:                Recordset rows = new Recordset();
072:                rows.append("id", java.sql.Types.VARCHAR);
073:                rows.append("type", java.sql.Types.VARCHAR);
074:                rows.append("mask", java.sql.Types.VARCHAR);
075:
076:                //retorna al primer elemento definido en el config.xml
077:                cols.reset();
078:
079:                //obtener todos los id del config.xml
080:                while (cols.hasMoreElements()) {
081:                    //crear un nuevo registro
082:                    rows.addNew();
083:                    //asignar elemento al recordset
084:                    rows.setValue("id", cols.next().getAttribute("id"));
085:                }
086:
087:                //retorna al primer elemento definido en el config.xml
088:                cols.reset();
089:
090:                //pararse en el primer registro del recordset
091:                rows.first();
092:
093:                //obtener todos los type del config.xml
094:                while (cols.hasMoreElements()) {
095:                    //asignar elemento al recordset
096:                    rows.setValue("type", cols.next().getAttribute("type"));
097:                    //pasar al siguiente registro
098:                    rows.next();
099:                }
100:
101:                //retorna al primer elemento definido en el config.xml
102:                cols.reset();
103:
104:                //pararse en el primer registro
105:                rows.first();
106:
107:                //obtener todos los elementos
108:                while (cols.hasMoreElements()) {
109:                    //asignar elemento al recordset
110:                    rows.setValue("mask", cols.next().getAttribute("mask"));
111:                    //pasar al sguiente registro
112:                    rows.next();
113:                }
114:
115:                //añadir la data a partir del row 1
116:                while (rs.next()) {
117:
118:                    //contador para el número de filas
119:                    int countRow = 0;
120:
121:                    //crear row
122:                    HSSFRow r = sheet
123:                            .createRow((short) rs.getRecordNumber() + 1);
124:
125:                    rows.top();
126:                    while (rows.next()) {
127:                        String mask = null;
128:                        String type = null;
129:                        String id = null;
130:
131:                        id = rows.getString("id");
132:                        type = rows.getString("type");
133:                        mask = rows.getString("mask");
134:
135:                        //verifica el tipo de campo
136:                        if (type.equals("varchar"))
137:                            //añadir celdas al row
138:                            r.createCell((short) countRow).setCellValue(
139:                                    new HSSFRichTextString(rs.getString(id)));
140:                        else {
141:                            if (type.equals("integer")) {
142:                                if (mask != null) {
143:                                    if (!rs.isNull(id))
144:                                        //añadir celdas al row
145:                                        r
146:                                                .createCell((short) countRow)
147:                                                .setCellValue(
148:                                                        new HSSFRichTextString(
149:                                                                StringUtil
150:                                                                        .formatNumber(
151:                                                                                rs
152:                                                                                        .getInteger(id),
153:                                                                                mask)));
154:                                } else {
155:                                    if (!rs.isNull(id))
156:                                        //añadir celdas al row
157:                                        r
158:                                                .createCell((short) countRow)
159:                                                .setCellValue(rs.getInteger(id));
160:                                }
161:                            } else {
162:                                if (type.equals("double")) {
163:                                    if (mask != null) {
164:                                        if (!rs.isNull(id))
165:                                            //añadir celdas al row
166:                                            r
167:                                                    .createCell(
168:                                                            (short) countRow)
169:                                                    .setCellValue(
170:                                                            new HSSFRichTextString(
171:                                                                    StringUtil
172:                                                                            .formatNumber(
173:                                                                                    rs
174:                                                                                            .getDouble(id),
175:                                                                                    mask)));
176:                                    } else {
177:                                        if (!rs.isNull(id))
178:                                            //añadir celdas al row
179:                                            r.createCell((short) countRow)
180:                                                    .setCellValue(
181:                                                            rs.getDouble(id));
182:                                    }
183:                                } else {
184:                                    if (type.equals("date")) {
185:                                        if (mask != null) {
186:                                            if (!rs.isNull(id))
187:                                                //añadir celdas al row
188:                                                r
189:                                                        .createCell(
190:                                                                (short) countRow)
191:                                                        .setCellValue(
192:                                                                new HSSFRichTextString(
193:                                                                        StringUtil
194:                                                                                .formatDate(
195:                                                                                        rs
196:                                                                                                .getDate(id),
197:                                                                                        mask)));
198:                                        } else
199:                                            throw new Exception(
200:                                                    "Elemento [mask] no encontrado");
201:                                    } else
202:                                        throw new Exception(
203:                                                "Elemento [type] no encontrado");
204:                                }
205:                            }
206:                        }
207:
208:                        countRow++;
209:                    }
210:
211:                }
212:
213:                //retornar documento para su impresion hacia el browser
214:                return wb;
215:
216:            }
217:
218:        }
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.