Foros del Web » Programación para mayores de 30 ;) » Java »

importar excel en java sobre jtable ya modelado

Estas en el tema de importar excel en java sobre jtable ya modelado en el foro de Java en Foros del Web. Hola a todos. Estoy intentando abrir un excel desde mi aplicacion. He conseguido hacerlo con el formato .csv pero ahora estaba intentando abrirlo con el ...
  #1 (permalink)  
Antiguo 29/07/2010, 03:03
 
Fecha de Ingreso: mayo-2010
Mensajes: 71
Antigüedad: 13 años, 11 meses
Puntos: 1
importar excel en java sobre jtable ya modelado

Hola a todos.

Estoy intentando abrir un excel desde mi aplicacion. He conseguido hacerlo con el formato .csv pero ahora estaba intentando abrirlo con el .xls.
Buscando informacion he encontrado tanto las librerias necesarias, como trozos de codigo.
Lo he intentado hacer pero cuando abro el archivo, el programa me da el error:
Cita:
Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: -11
at java.util.Vector.setSize(Vector.java:245)
at javax.swing.table.DefaultTableModel.justifyRows(De faultTableModel.java:245)
at javax.swing.table.DefaultTableModel.setDataVector( DefaultTableModel.java:207)
at javax.swing.table.DefaultTableModel.<init>(Default TableModel.java:107)
at javax.swing.table.DefaultTableModel.<init>(Default TableModel.java:89)
at javax.swing.table.DefaultTableModel.<init>(Default TableModel.java:69)
at gestion_campeonatos.InscribirParticipante$18.<init >(InscribirParticipante.java:970)
...... y muchas mas
......
.....
......
Os pongo el código.

Codigo del boton que al darle click, se me abre una ventana explorador y busco mi archivo excel:
Cita:
private void jButton11ActionPerformed(java.awt.event.ActionEven t evt) {
JFileChooser fileChooser = new JFileChooser();
int status = fileChooser.showOpenDialog(null);
if(status==JFileChooser.APPROVE_OPTION){
File file=fileChooser.getSelectedFile();
if(file!=null){
rellenar_tabla_desde_excel(file);
}
}
}
Codigo del metodo rellenar_tabla_desde_excel(); :

Cita:
private void rellenar_tabla_desde_excel(File file){
try {
//getting the workbook
wbook = Workbook.getWorkbook(file);
//una hoja en especifico
final Sheet hoja = wbook.getSheet(0);
Cell a1 = hoja.getCell(0, 0);
final int columnas = hoja.getColumns();
final int filas = hoja.getRows();


modelo = new DefaultTableModel() {

@Override
public String getColumnName(int column) {
Cell cell = hoja.getCell(column, 0);
LabelCell lc = (LabelCell) cell;
return lc.getString();
}
@Override
public boolean isCellEditable(int row, int col) {
return false;
}

@Override
public int getColumnCount() {
return columnas;
}

@Override
public int getRowCount() {
return filas-getColumnCount()-1;
}

@Override
public Object getValueAt(int row, int col) {
row++;
Cell cell = hoja.getCell(col, row);
if (cell.getType() == CellType.LABEL) {
LabelCell lc = (LabelCell) cell;
return lc.getString();
} else if (cell.getType() == CellType.NUMBER) {
NumberCell nc = (NumberCell) cell;
return nc.getValue();
} else if (cell.getType() == CellType.DATE) {
DateCell dc = (DateCell) cell;
return dc.getDate();
}
return null;
}
};

this.jTable1.setModel(modelo);
}catch (IOException ex) {
ex.printStackTrace();
}catch (BiffException ex) {
ex.printStackTrace();
}
}
He puesto en rojo donde justo me falla...el archivo excel me lo lee bien porque los metodos contar getcolumn y getrows me devuelven los valores correctos del excel...

Pero lo que nose es como hacer que teniendo ya un jtable1 con sus columnas en mi aplicacion, añadirle los valores del excel.

He probado tambien con tablita = (DefaultTableModel)jTable1.getModel();
donde tablita lo declaro al inicio del metodo como DefaultTableModel tablita;
pero nada...por cierto en el codigo, "modelo" esta declarado al inicio de la clase, lo digo para que no penseis que no esta declarado.

Alguna idea?
Muchas gracias de antemano y aparte de resolver la duda, espero que le sirva a la gente para aprender a como abrir un excel :)
  #2 (permalink)  
Antiguo 04/08/2010, 04:10
 
Fecha de Ingreso: mayo-2010
Mensajes: 71
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: importar excel en java sobre jtable ya modelado

alguien sabria decirme como?

un saludo
  #3 (permalink)  
Antiguo 04/08/2010, 05:23
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 4 meses
Puntos: 41
Respuesta: importar excel en java sobre jtable ya modelado

Estás seguro que tenés bien colodaco el parámetro column.. digo.. xq usualmente siempre es (row, column).. Realmente no me acuerdo la API de POI..
Cita:
@Override
public String getColumnName(int column) {
Cell cell = hoja.getCell(column, 0);
LabelCell lc = (LabelCell) cell;
return lc.getString();
}
Cita:
@Override
public Object getValueAt(int row, int col) {
row++;
Cell cell = hoja.getCell(col, row);
Una cosa mas, la ArrayIndexOutOfBoundsException no te puede estar tirando en LA LINEA DE LA inicialización del objeto..
Código Java:
Ver original
  1. modelo = new DefaultTableModel() {
sino en alguno de los métodos que sobreescribiste.
La Exception es bastante sencilla de corregir, siemplemente te estás pasando de indice, tené en cuenta que siempre empieza en cero, y que POI ignora las cells en blando de un Excel
__________________
BadProgrammerException!

Etiquetas: excel, jtable, modelado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:28.