necesito ayuda con poi para crear un excel

buenas tardes.

Compañeros.necesito de su apoyo ya que me encuentro en un problema.

lo que tengo que hacer es crear un archivo de excel con poi con struts 1.2 y spring 1.1 asi que necesito como empezar crear el archivo.

nesito el esqueleto de la clase.

porfa.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Lilith

Un jemplo con POI

No dices que versión de Excel quieres escribir, para 2003 yo te recomendaría mejor jExcelApi (http://jexcelapi.sourceforge.net/)

Aquí un muy sencillo ejemplo con JExcelApi (hay que mejorarlo pero funciona):

import java.io.FileOutputStream;
import java.io.OutputStream;
import javax.swing.JTable;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.Number;

public class exportarExcel{
   
/**
Como parámetros le mando la ruta donde se guardara el archivo, y un JTable (que son los datos a exportar al archivo Excel) igual pudo haber sido el DefaultTableModel, un ResultSet u otra cosa...
*/

    public exportarExcel(String path, JTable tabla) throws Exception {
     OutputStream salida = new FileOutputStream(path +"/nameArchivo.xls");
     
        // Creamos el archivo
        WritableWorkbook w = Workbook.createWorkbook(salida);
        // Creamo una hoja
        WritableSheet s = w.createSheet("MyHoja", 0);
        int columnas= tabla.getColumnCount();
        int filas=tabla.getRowCount();
         

         
         for (int i=0;i<columnas;i++ ){
                    s.addCell(new Label(i,0, tabla.getColumnName(i)));
                }
         
        for (int f=0; f<filas; f++){
           
                for (int c=0;c<columnas;c++ ){
                    if(tabla.getValueAt(f,c).toString().trim().matches("^[\\d\\|]+$")){
                       
                         s.addCell(new Number (c,f+1,Integer.parseInt(tabla.getValueAt(f, c).toString())));
                    }
                    else{
                        s.addCell(new Label(c,f+1, tabla.getValueAt(f, c).toString()));
                    }
                       
                }
           
        }
       
        // Adicionamos las celdas al libro
        w.write();
        // escribimos
        w.close();

     

}
   
}

Aquí va un ejemplo para leer un archivo Excel 2007, es sólo para orientarte, tu tarea será modificar la clase y mejorarla para escribir en un archivo ¡no es nada complicado!

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import java.util.Iterator;

import java.io.*;
import java.util.ArrayList;

public class xlsx {
   
  public int numHojas;
  public int numrows;
  public int numcolumns;
  public Object[] tipos=null;
  private XSSFWorkbook workbook;
  private Iterator rows;

 
  public xlsx(String f) throws Exception{
      try {
            FileInputStream fis = new FileInputStream(f);
            workbook = new XSSFWorkbook(fis);
            numHojas=workbook.getNumberOfSheets();
        } catch (IOException e) {
            e.printStackTrace();
        }
     
  }
    public String[] ReadSheet(){    
        String[] hojas=null;
       
            hojas=new String[numHojas];
            for(int i=0;i<numHojas;i++){
                hojas[i]=workbook.getSheetAt(i).getSheetName();
                }
            return hojas;  
    }
   
    public Object[] ReadHead(String hj){
        XSSFSheet sheet = workbook.getSheet(hj);
        numrows=sheet.getLastRowNum();
        rows = sheet.rowIterator();
        return ReadRow();
    }
   
   
    public Object[] ReadRow(){
       numcolumns=0;
        Object[] fila=null;
        ArrayList lista=new ArrayList();
        ArrayList tip=new ArrayList();

       
            if (rows.hasNext()){
                XSSFRow row = ((XSSFRow) rows.next());
                Iterator cells = row.cellIterator();
                while(cells.hasNext())
                {
 
                    numcolumns++;
                    XSSFCell cell = (XSSFCell) cells.next();
                    int tipo=cell.getCellType();    
                   switch(tipo){
                        case 0:{
                            //tipo numeric, devuelve un double
                           
                            lista.add(cell.getNumericCellValue());
                            tip.add("Numeric");
                           
                        }
                        break;
                        case 1:{
                            //tipo string, obvio! devuelve un String
                            lista.add(cell.getStringCellValue());
                            tip.add("Label");
                        }
                        break;
                        case 2:{
                            //tipo formula, devuelve un String
                            lista.add(cell.getCellFormula());
                            tip.add("Formula");
                        }
                        break;
                        case 3:{
                            //tipo BLANK blanco o vacio
                            lista.add("");
                            tip.add("Vacio");
                        }
                        break;
                        case 4:{
                            //tipo boolean, devuelve un boolean
                            lista.add(cell.getBooleanCellValue());
                            tip.add("Boolean");
                        }
                        break;
                        case 5:{
                            //tipo boolean, devuelve un boolean
                            lista.add(cell.getErrorCellString());
                            tip.add("Error");
                        }
                        break;
                           
                    }
                }

                tipos=new Object[numcolumns];
                fila=new Object[numcolumns];
            for(int i=0;i<numcolumns;i++){
                fila[i]=lista.get(i).toString();
                tipos[i]=tip.get(i).toString();
               
            }
            }

       return fila;          

    }
}

Nota super importante: Debes también agregar la librería dom4j (creo la más reciente es la 1.6.1) ya que por una extraña razón POI no tiene una clase (disculpa que ya no recuerde cual es pero te aseguro que no la incluye aunque diga que si, puedes revisar el frasco) y sin ella obtendrás el error de que falta dicha clase.

Imagen de neko069

POI

Me parece que a partir de la versión 3.5 de Apache POI ya tiene soporte para que le digas que versión de excel vas a manejar para crear/consumir un archivo, de hecho, en el intro de su página (aquí te dejo el link) te dice qué clase te genera cuál versión, checa el menú de la izquierda, ahí está la guíay puedes usar la clase que nos hizo favor de dejar @Lilith, para que te des una idea.
Ahora, dices que es para trabajar con Struts, te comento que POI sólo lo puedes usar para crear/consumir archivos del lado del servidor, y servirlos como stream del lado del cliente, no sé que proceso en específico es el que vayas a desarrollar, sería bueno que lo comentaras.
Mucha suerte!

stream

como lo sirves como stream de lado del cliente =O y como lo lees del lado del server?

Imagen de davisoski

Algo mas