Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Generador de Archivos Excel - Programa Java
Generador de Archivos Excel - Programa Java
OBJETIVO:
El objetivo de esta aplicación es generar un archivo Excel a partir de la interfaz de
escritorio. Se realizará con el lenguaje de programación Java en IDE NetBeans,
empleando la librería poi-3.12.jar para la creación, importación y exportación del archivo
Excel.
1. Agregamos la librería poi-3.12.jar, para poder exportar formatos Excel.
2.1.1. Implementamos este código en la clase ControladorExcel, para hacer que los
archivos Excel sean compatibles y puedan ser importados, modificados y
exportados.
1. paquete Controlador ;
2.
3. import java.awt.event.ActionEvent ;
4. import java.awt.event.ActionListener ;
5. import java.io. * ;
6. importar Vista.VistaExcel ;
7. importar Modelo.ModeloExcel ;
8. import javax.swing. * ;
9. import javax.swing.filechooser.FileNameExtensionFilter ;
10.
11. ControladorExcel de clase pública implementa ActionListener {
12. ModeloExcel modeloE = new ModeloExcel ( ) ;
13. VistaExcel vistaE = nueva VistaExcel ( ) ;
14. JFileChooser selecArchivo = new JFileChooser ( ) ;
15. Archivo archivo ;
16. int contAccion = 0 ;
17.
18. ControladorExcel público ( VistaExcel vistaE, ModeloExcel modeloE ) {
19. esta . vistaE = vistaE ;
20. esta . modeloE = modeloE ;
21. esta . vistaE . btnImportar . addActionListener ( esto ) ;
22. esta . vistaE . btnExportar . addActionListener ( esto ) ;
23. }
24.
25. público vacío AgregarFiltro ( ) {
26. selecArchivo. setFileFilter ( nuevo FileNameExtensionFilter ( "Excel (*
.xls)" , "xls" ) ) ;
27. selecArchivo. setFileFilter ( nuevo FileNameExtensionFilter ( "Excel (*
.xlsx)" , "xlsx" ) ) ;
28. }
29.
30. @Anular
31. public void actionPerformed ( ActionEvent e ) {
32. contAccion ++;
33. if ( contAccion == 1 ) AgregarFiltro ( ) ;
34.
35. if ( e. getSource ( ) == vistaE. btnImportar ) {
36. if ( selecArchivo. showDialog ( null , "Seleccionar
archivo" ) == JFileChooser . APPROVE_OPTION ) {
37. archivo = selecArchivo. getSelectedFile ( ) ;
38. if ( archivo. getName ( ) . endsWith ( "xls" ) || archivo. getName ( ) . end
sWith ( "xlsx" ) ) {
39. JOptionPane . showMessageDialog ( nulo ,
40. modeloE. Importar ( archivo, vistaE. JtDatos ) + " \
n Formato". + archivo. getName ( ) . subcadena ( archivo. getName ( ) . lastIndexOf ( "." )
+ 1 ) ,
41. "EXCEL IMPORTAR" , JOptionPane . MENSAJE DE INFORMACIÓN ) ;
42. } más {
43. JOptionPane . showMessageDialog ( nulo , "Elija un formato valido" ) ;
44. }
45. }
46. }
47.
48. if ( e. getSource ( ) == vistaE. btnExportar ) {
49. if ( selecArchivo. showDialog ( null , "Exportar" ) == JFileChooser . APPROVE_OP
TION ) {
50. archivo = selecArchivo. getSelectedFile ( ) ;
51. if ( archivo. getName ( ) . endsWith ( "xls" ) || archivo. getName ( ) . end
sWith ( "xlsx" ) ) {
52. JOptionPane . showMessageDialog ( null , modeloE. Exportar ( archivo,
vistaE. jtDatos ) + " \
n Formato." + archivo. getName ( ) . substring ( archivo. getName ( ) . lastIndexOf ( "." )
+ 1 ) ) ;
53. } más {
54. JOptionPane . showMessageDialog ( nulo , "Elija un formato valido" ) ;
55. }
56. }
57. }
58. }
59.
60. }
2.3. Paquete Vista, se creará una clase de tipo JFrame con el nombre de VistaExcel, o
el nombre que usted escoja.
2.3.1. Creamos el diseño de la aplicación, en donde el cliente interactuará con el
software.
1. paquete Vista ;
2.
3. importar Modelo.ModeloExcel ;
4. import java.awt.Color ;
5. import javax.swing.JOptionPane ;
6. import javax.swing.table.DefaultTableModel ;
7.
8. clase pública VistaExcel extiende javax. el swing . JFrame {
9.
10. ModeloExcel privado fc ;
11.
12. VistaExcel público ( ) {
13. initComponents ( ) ;
14. setLocationRelativeTo ( this ) ;
15. setResizable ( falso ) ;
16.
17. getContentPane ( ) . setBackground ( Color . BLANCO ) ;
18. fc = nuevo ModeloExcel ( ) ;
19. cbx_entidad. removeAllItems ( ) ;
20. cbx_locacion. removeAllItems ( ) ;
21.
22.
23. String entidad [ ] = { "Naranja" , "Java" } ;
24. para ( int i = 0 ; i < entidad. length ; i ++ )
25. {
26. cbx_entidad. addItem ( entidad [ i ] ) ;
27. }
28.
29. String locacion [ ] = { "Almacen_llegan_fundo" , "Almacen_de_procesadora" , "Traslad
o_a_lavado" , "lavado_y_encerado" , "traslado_a_clasificadora" , "clasificado_de_naranjas"
30. , "traslado_final" , "jaba_para_naranjas" , "Pesado_de_jaba" , "
Jaba_en_zona_productos_terminados" } ;
31. for ( int i = 0 ; i < locacion. length ; i ++ )
32. {
33. cbx_locacion. addItem ( locacion [ i ] ) ;
34. }
35. }
36.
37. / **
38. * Este método se llama desde el constructor para inicializar el formulario.
39. * ADVERTENCIA: NO modifique este código. El contenido de este método es siempre
40. * regenerado por el Editor de formularios.
41. * /
42. @SuppressWarnings ( "sin marcar " )
43. // <editor-fold defaultstate = "colapsado" desc = "Código
generado">
44. privado vacío initComponents ( ) {
45.
46. btnImportar = nuevo javax. el swing . JButton ( ) ;
47. btnExportar = nuevo javax. el swing . JButton ( ) ;
48. jScrollPane1 = nuevo javax. el swing . JScrollPane ( ) ;
49. jtDatos = nuevo javax. el swing . JTable ( ) ;
50. txt_numero = nuevo javax. el swing . JTextField ( ) ;
51. jLabel6 = nuevo javax. el swing . JLabel ( ) ;
52. txt_frecuencia = nuevo javax. el swing . JTextField ( ) ;
53. btn_generar = nuevo javax. el swing . JButton ( ) ;
54. jLabel1 = nuevo javax. el swing . JLabel ( ) ;
55. cbx_entidad = nuevo javax. el swing . JComboBox <> ( ) ;
56. jLabel2 = nuevo javax. el swing . JLabel ( ) ;
57. cbx_locacion = nuevo javax. el swing . JComboBox <> ( ) ;
58. jLabel3 = nuevo javax. el swing . JLabel ( ) ;
59. txt_qty = nuevo javax. el swing . JTextField ( ) ;
60. jLabel4 = nuevo javax. el swing . JLabel ( ) ;
61. txt_tiempo = nuevo javax. el swing . JTextField ( ) ;
62. jLabel5 = nuevo javax. el swing . JLabel ( ) ;
63. jLabel7 = nuevo javax. el swing . JLabel ( ) ;
64.
65. setDefaultCloseOperation ( javax. swing . WindowConstants . EXIT_ON_CLOSE ) ;
66. setTitle ( " SIMULACION ( PROYECTO FRUCPASA)" ) ;
67.
68. btnImportar. setFont ( nueva fuente java. awt . ( "Tahoma" , 1 , 11 ) ) ; // NOI18N
69. btnImportar. setText ( "IMPORTAR" ) ;
70.
71. btnExportar. setFont ( nueva fuente java. awt . ( "Tahoma" , 1 , 11 ) ) ; // NOI18N
72. btnExportar. setText ( "EXPORTAR" ) ;
73.
74. jtDatos. setModel ( nueva javax. swing . table . DefaultTableModel (
75. nuevo objeto [ ] [ ] {
76. { nulo , nulo , nulo , nulo , nulo , nulo } ,
77. { nulo , nulo , nulo , nulo , nulo , nulo } ,
78. { nulo , nulo , nulo , nulo , nulo , nulo } ,
79. { nulo , nulo , nulo , nulo , nulo , nulo }
80. } ,
81. nueva Cadena [ ] {
82. "Título 1" , "Título 2" , "Título 3" , "Título 4" , "Título 5" , "Título 6"
83. }
84. ) ) ;
85. jtDatos. setAutoscrolls ( falso ) ;
86. jtDatos. setSelectionMode ( javax. swing . ListSelectionModel . SINGLE_SELECTION ) ;
87. jtDatos. getTableHeader ( ) . setResizingAllowed ( falso ) ;
88. jScrollPane1. setViewportView ( jtDatos ) ;
89.
90. jLabel6. setText ( "Frecuencia" ) ;
91.
92. btn_generar. setText ( "Guardar Datos" ) ;
93. btn_generar. addActionListener ( nueva java. AWT . evento . ActionListener ( ) {
94. public void actionPerformed ( java. awt . event . ActionEvent evt ) {
95. btn_generarActionPerformed ( evt ) ;
96. }
97. } ) ;
98.
99. jLabel1. setText ( "Entidad" ) ;
100.
101. cbx_entidad. setModel ( new javax. swing . DefaultComboBoxModel <> ( new String [ ]
{ "Item 1" , "Item 2" , "Item 3" , "Item 4" } ) ) ;
102.
103. jLabel2. setText ( "Ubicación" ) ;
104.
105. cbx_locacion. setModel ( new javax. swing . DefaultComboBoxModel <> ( new String [ ]
{ "Item 1" , "Item 2" , "Item 3" , "Item 4" } ) ) ;
106.
107. jLabel3. setText ( "Cantidad" ) ;
108.
109. jLabel4. setText ( "Tiempo" ) ;
110.
111. txt_tiempo. addActionListener ( nueva java. AWT . evento . ActionListener ( ) {
112. public void actionPerformed ( java. awt . event . ActionEvent evt ) {
113. txt_tiempoActionPerformed ( evt ) ;
114. }
115. } ) ;
116.
117. jLabel5. setText ( "Número" ) ;
118.
119. jLabel7. setFont ( nueva fuente java. awt . ( "Verdana" , 1 , 18 ) ) ; // NOI18N
120. jLabel7. setText ( "INGRESAR DATOS:" ) ;
121.
122. javax el swing . Diseño de GroupLayout = nuevo javax. el
swing . GroupLayout ( getContentPane ( ) ) ;
123. getContentPane ( ) . setLayout ( diseño ) ;
124. diseño. setHorizontalGroup (
125. diseño. createParallelGroup ( javax. swing . GroupLayout . Alignment . LEADING )
126. . addGroup ( layout. createSequentialGroup ( )
127. . addGap ( 29 , 29 , 29 )
128. . addComponent ( btnImportar )
129. . addGap ( 148 , 148 , 148 )
130. . addComponent ( jLabel7,
javax. swing . GroupLayout . PREFERRED_SIZE , 220 ,
javax. swing . GroupLayout . PREFERRED_SIZE )
131. . addContainerGap ( javax. swing . GroupLayout . DEFAULT_SIZE , Short . MAX_
VALUE ) )
132. . addGroup ( layout. createSequentialGroup ( )
133. . addContainerGap ( 19 , corto . MAX_VALUE )
134. . addGroup ( layout. createParallelGroup ( javax. swing . GroupLayout . Alig
nment . LEADING )
135. . addGroup ( javax. swing . GroupLayout . Alignment . TRAILING ,
layout. createSequentialGroup ( )
136. . addGroup ( layout. createParallelGroup ( javax. swing . GroupLayou
t . Alignment . LEADING )
137. . addComponent ( jLabel5 )
138. . addGroup ( layout. createSequentialGroup ( )
139. . addGroup ( layout. createParallelGroup ( javax. swing . Gr
oupLayout . Alignment . LEADING )
140. . addComponent ( jLabel1 )
141. . addComponent ( jLabel4 )
142. . addComponent ( jLabel3 )
143. . addComponent ( jLabel2 )
144. . addComponent ( jLabel6 ) )
145. . addGap ( 70 , 70 , 70 )
146. . addGroup ( layout. createParallelGroup ( javax. swing . Gr
oupLayout . Alignment . LEADING )
147. . addComponent ( cbx_entidad,
javax. swing . GroupLayout . PREFERRED_SIZE , 163 ,
javax. swing . GroupLayout . PREFERRED_SIZE )
148. . addComponent ( txt_qty,
javax. swing . GroupLayout . PREFERRED_SIZE , 163 ,
javax. swing . GroupLayout . PREFERRED_SIZE )
149. . addComponent ( ubicación_cbx,
javax. swing . GroupLayout . PREFERRED_SIZE , 163 ,
javax. swing . GroupLayout . PREFERRED_SIZE )
150. . addComponent ( txt_tiempo,
javax. swing . GroupLayout . PREFERRED_SIZE , 163 ,
javax. swing . GroupLayout . PREFERRED_SIZE )
151. . addComponent ( txt_numero,
javax. swing . GroupLayout . PREFERRED_SIZE , 52 ,
javax. swing . GroupLayout . PREFERRED_SIZE )
152. . addComponent ( txt_frecuencia,
javax. swing . GroupLayout . PREFERRED_SIZE , 52 ,
javax. swing . GroupLayout . PREFERRED_SIZE ) ) ) )
153. . addGroup ( layout. createParallelGroup ( javax. swing . GroupLayou
t . Alignment . LEADING )
154. . addGroup ( layout. createSequentialGroup ( )
155. . addGap ( 102 , 102 , 102 )
156. . addComponent ( btn_generar,
javax. swing . GroupLayout . PREFERRED_SIZE , 163 ,
javax. swing . GroupLayout . PREFERRED_SIZE ) )
157. . addGroup ( javax. swing . GroupLayout . Alignment . TRAILING ,
layout. createSequentialGroup ( )
158. . addPreferredGap ( javax. swing . LayoutStyle . ComponentPl
acement . RELACIONADO )
159. . addComponent ( btnExportar )
160. . addGap ( 11 , 11 , 11 ) ) ) )
161. . addComponent ( jScrollPane1,
javax. swing . GroupLayout . Alignment . TRAILING ,
javax. swing . GroupLayout . PREFERRED_SIZE , 669 ,
javax. swing . GroupLayout . PREFERRED_SIZE ) )
162. . addGap ( 0 , 13 , corto . MAX_VALUE ) )
163. ) ;
164. diseño. setVerticalGroup (
165. diseño. createParallelGroup ( javax. swing . GroupLayout . Alignment . LEADING )
166. . addGroup ( layout. createSequentialGroup ( )
167. . addGroup ( layout. createParallelGroup ( javax. swing . GroupLayout . Alig
nment . LEADING )
168. . addGroup ( layout. createSequentialGroup ( )
169. . addGap ( 114 , 114 , 114 )
170. . addComponent ( btn_generar,
javax. swing . GroupLayout . PREFERRED_SIZE , 47 ,
javax. swing . GroupLayout . PREFERRED_SIZE )
171. . addPreferredGap ( javax. swing . LayoutStyle . ComponentPlacement
. RELATED , javax. swing . GroupLayout . DEFAULT_SIZE , Short . MAX_VALUE )
172. . addComponent ( btnExportar )
173. . addGap ( 18 , 18 , 18 ) )
174. . addGroup ( layout. createSequentialGroup ( )
175. . addContainerGap ( )
176. . addGroup ( layout. createParallelGroup ( javax. swing . GroupLayou
t . Alignment . LEADING )
177. . addGroup ( layout. createSequentialGroup ( )
178. . addComponent ( btnImportar )
179. . addGap ( 39 , 39 , 39 )
180. . addGroup ( layout. createParallelGroup ( javax. swing . Gr
oupLayout . Alignment . BASELINE )
181. . addComponent ( jLabel1 )
182. . addComponent ( cbx_entidad,
javax. swing . GroupLayout . PREFERRED_SIZE , javax. swing . GroupLayout . DEFAULT_SIZE ,
javax. swing . GroupLayout . PREFERRED_SIZE ) )
183. . addPreferredGap ( javax. swing . LayoutStyle . ComponentPl
acement . RELACIONADO )
184. . addGroup ( layout. createParallelGroup ( javax. swing . Gr
oupLayout . Alignment . BASELINE )
185. . addComponent ( jLabel2 )
186. . addComponent ( ubicación_bc,
javax. swing . GroupLayout . PREFERRED_SIZE , javax. swing . GroupLayout . DEFAULT_SIZE ,
javax. swing . GroupLayout . PREFERRED_SIZE ) ) )
187. . addComponent ( jLabel7,
javax. swing . GroupLayout . PREFERRED_SIZE , 44 ,
javax. swing . GroupLayout . PREFERRED_SIZE ) )
188. . addPreferredGap ( javax. swing . LayoutStyle . ComponentPlacement
. RELACIONADO )
189. . addGroup ( layout. createParallelGroup ( javax. swing . GroupLayou
t . Alignment . BASELINE )
190. . addComponent ( jLabel3 )
191. . addComponent ( txt_qty,
javax. swing . GroupLayout . PREFERRED_SIZE , javax. swing . GroupLayout . DEFAULT_SIZE ,
javax. swing . GroupLayout . PREFERRED_SIZE ) )
192. . addPreferredGap ( javax. swing . LayoutStyle . ComponentPlacement
. RELACIONADO )
193. . addGroup ( layout. createParallelGroup ( javax. swing . GroupLayou
t . Alignment . BASELINE )
194. . addComponent ( txt_tiempo,
javax. swing . GroupLayout . PREFERRED_SIZE , javax. swing . GroupLayout . DEFAULT_SIZE ,
javax. swing . GroupLayout . PREFERRED_SIZE )
195. . addComponent ( jLabel4,
javax. swing . GroupLayout . DEFAULT_SIZE ,
javax. swing . GroupLayout . DEFAULT_SIZE , Short . MAX_VALUE ) )
196. . addPreferredGap ( javax. swing . LayoutStyle . ComponentPlacement
. RELACIONADO )
197. . addGroup ( layout. createParallelGroup ( javax. swing . GroupLayou
t . Alignment . BASELINE )
198. . addComponent ( txt_numero,
javax. swing . GroupLayout . PREFERRED_SIZE , javax. swing . GroupLayout . DEFAULT_SIZE ,
javax. swing . GroupLayout . PREFERRED_SIZE )
199. . addComponent ( jLabel5 ) )
200. . addPreferredGap ( javax. swing . LayoutStyle . ComponentPlacement
. RELACIONADO )
201. . addGroup ( layout. createParallelGroup ( javax. swing . GroupLayou
t . Alignment . BASELINE )
202. . addComponent ( txt_frecuencia,
javax. swing . GroupLayout . PREFERRED_SIZE , javax. swing . GroupLayout . DEFAULT_SIZE ,
javax. swing . GroupLayout . PREFERRED_SIZE )
203. . addComponent ( jLabel6 ) )
204. . addGap ( 39 , 39 , 39 ) ) )
205. . addComponent ( jScrollPane1,
javax. swing . GroupLayout . PREFERRED_SIZE , 185 ,
javax. swing . GroupLayout . PREFERRED_SIZE )
206. . addContainerGap ( ) )
207. ) ;
208.
209. paquete ( ) ;
210. } // </editor-fold>
211.
212. nulo privado btn_generarActionPerformed ( java. awt . event . ActionEvent evt ) {
1. paquete gestionexcel ;
2. importar Modelo.ModeloExcel ;
3. importar Vista.VistaExcel ;
4. importa Controlador.ControladorExcel ;
5.
6. clase pública GestionExcel {
7.
8. / **
9. * @param argumenta los argumentos de la línea de comando
10. * /
11. public static void main ( String [ ] args ) {
12. ModeloExcel modeloE = new ModeloExcel ( ) ;
13. VistaExcel vistaE = nueva VistaExcel ( ) ;
14. ControladorExcel contraControladorExcel = nuevo ControladorExcel ( vistaE,
modeloE ) ;
15. vistaE. setVisible ( verdadero ) ;
16. vistaE. setLocationRelativeTo ( nulo ) ;
17. }
18.
19. }
3. Ejecutamos el
programa:
3.1. Importamos el archivo: