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

generar excel desde spring mvc

Estas en el tema de generar excel desde spring mvc en el foro de Java en Foros del Web. Wenas, les comparto parte del codigo para generar excel mediante spring mvc, de varias formas Código PHP: package com . controlador ; import java . io . ...
  #1 (permalink)  
Antiguo 10/07/2013, 16:19
 
Fecha de Ingreso: mayo-2010
Mensajes: 99
Antigüedad: 16 años, 5 meses
Puntos: 5
generar excel desde spring mvc

Wenas, les comparto parte del codigo para generar excel mediante spring mvc, de varias formas

Código PHP:
package com.controlador;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.view.document.AbstractExcelView;
import com.servicio.searchService;
import com.utils.excelReporte;
import com.utils.excelReporteTiempo;

.....................
@
Controller

public class inventoryControl {
..........................
 @
RequestMapping(value="/excelmvc")
    public 
ModelAndView list() {
        
logger.debug("generar reporte excel..");
    return new 
ModelAndView(new excelReporte());
    
    } 
usando el AbstractExcelView en mi clase excelReporte
Código PHP:
package com.utils;

import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.Map; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import com.bean.*;

import org.apache.poi.hssf.usermodel.HSSFCellStyle; 
import org.apache.poi.hssf.usermodel.HSSFDataFormat; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.springframework.web.servlet.view.document.AbstractExcelView; 

public class 
excelReporte extends AbstractExcelView  {
    @
Override
    
protected    void buildExcelDocument (Map model, 
            
HSSFWorkbook workbook, 
            
HttpServletRequest request, 
            
HttpServletResponse response) throws Exception {


            
// Set the response mode, perform this controller automatically download page, rather than direct use Excel to open 
            
response.setContentType ("APPLICATION / OCTET-STREAM"); 
            
//response.setHeader ("Content-Disposition","Attachment; filename =Excel.xls "); 
            
response.addHeader("Content-Disposition", "attachment; filename=\"myexcel.xls\"");

            
// Construct data 
            
genericoBean stu1 = new genericoBean ("gaoxiang1", "male1", "20060101", "1"); 
            
genericoBean stu2 = new genericoBean ("gaoxiang2", "male2", "20060102", "2"); 
            
genericoBean stu3 = new genericoBean ("gaoxiang3", "male3", "20060103", "3"); 
            
genericoBean stu4 = new genericoBean ("gaoxiang4", "male4", "20060104", "4"); 
            
genericoBean stu5 = new genericoBean ("gaoxiang5", "male5", "20060105", "5"); 
            
ArrayList stuList = new ArrayList (); 
            
stuList.add (stu1); 
            
stuList.add (stu2); 
            
stuList.add (stu3); 
            
stuList.add (stu4); 
            
stuList.add (stu5); 

            
// Excel header 
            
HSSFSheet sheet = workbook.createSheet("studentList"); 
            
HSSFRow header = sheet.createRow (0); // row 0 
            // Generate the title bar 
            
header.createCell ((short) 0).setCellValue ("name"); 
            
header.createCell ((short) 1).setCellValue ("sex"); 
            
header.createCell ((short) 2).setCellValue ("date"); 
            
header.createCell ((short) 3).setCellValue ("count"); 
            
HSSFCellStyle cellStyle = workbook.createCellStyle (); 
            
cellStyle.setDataFormat (HSSFDataFormat.getBuiltinFormat ("mm / dd / yyyy")); 

            
// Fill data 
                     
int rowNum = 1; 
            for (
Iterator iter = stuList.iterator (); iter.hasNext () ;) {
            
genericoBean element = (genericoBean) iter.next (); 
            
HSSFRow row = sheet.createRow (rowNum ++); 
            
row.createCell ((short) 0). setCellValue (element.getAttr1(). toString ()); 
            
row.createCell ((short) 1). setCellValue (element.getAttr2(). toString ()); 
            
row.createCell ((short) 2). setCellValue (element.getAttr3(). toString ()); 
            
row.getCell ((short) 2). setCellStyle (cellStyle); 
            
row.createCell ((short) 3). setCellValue (element.getAttr4()); 
            } 

            
// Column is calculated as the sum of 
            
HSSFRow row = sheet.createRow (rowNum); 
            
row.createCell ((short) 0). setCellValue ("TOTAL:"); 
            
String formual = "SUM (D2: D" + rowNum + ")"; // D2 to D [rownum] cell Ki (count data) 
            
row.createCell ((short) 3). setCellFormula (formual); 

            } 

} 
Y en el jsp
Código PHP:
....
<
a href="<%=request.getContextPath()%>/excelmvc.htm" >Download in Excel doc</a> 
  #2 (permalink)  
Antiguo 10/07/2013, 16:24
 
Fecha de Ingreso: mayo-2010
Mensajes: 99
Antigüedad: 16 años, 5 meses
Puntos: 5
Respuesta: generar excel desde spring mvc

La segunda forma dentro del controlador es esta

Código PHP:

 
@RequestMapping(value ="/list/excel")
    public 
View listExcell() {
        return new 
AbstractExcelView() {
            @
Override
            
protected void buildExcelDocument(Map<String, Object> model, HSSFWorkbook workbook,
                    
HttpServletRequest request, HttpServletResponse response) throws Exception {
                
                
response.setContentType ("APPLICATION / OCTET-STREAM"); 
                
response.addHeader("Content-Disposition", "attachment; filename=\"employee-list.xls\"");
                
logger.info("generando reporte excel..");

                
                
genericoBean stu1 = new genericoBean ("gaoxiang1", "male1", "20060101", "1"); 
                
genericoBean stu2 = new genericoBean ("gaoxiang2", "male2", "20060102", "2"); 
                
genericoBean stu3 = new genericoBean ("gaoxiang3", "male3", "20060103", "3"); 
                
genericoBean stu4 = new genericoBean ("gaoxiang4", "male4", "20060104", "4"); 
                
genericoBean stu5 = new genericoBean ("gaoxiang5", "male5", "20060105", "5"); 
                
ArrayList stuList = new ArrayList (); 
                
stuList.add (stu1); 
                
stuList.add (stu2); 
                
stuList.add (stu3); 
                
stuList.add (stu4); 
                
stuList.add (stu5); 

                
// Excel header 
                
HSSFSheet sheet = workbook.createSheet("studentList"); 
                
HSSFRow header = sheet.createRow (0); // row 0 
                // Generate the title bar 
                
header.createCell ((short) 0).setCellValue ("name"); 
                
header.createCell ((short) 1).setCellValue ("sex"); 
                
header.createCell ((short) 2).setCellValue ("date"); 
                
header.createCell ((short) 3).setCellValue ("count"); 
                
HSSFCellStyle cellStyle = workbook.createCellStyle (); 
                
cellStyle.setDataFormat (HSSFDataFormat.getBuiltinFormat ("mm / dd / yyyy")); 

                
// Fill data 
                         
int rowNum = 1; 
                for (
Iterator iter = stuList.iterator (); iter.hasNext () ;) {
                
genericoBean element = (genericoBean) iter.next (); 
                
HSSFRow row = sheet.createRow (rowNum ++); 
                
row.createCell ((short) 0). setCellValue (element.getAttr1(). toString ()); 
                
row.createCell ((short) 1). setCellValue (element.getAttr2(). toString ()); 
                
row.createCell ((short) 2). setCellValue (element.getAttr3(). toString ()); 
                
row.getCell ((short) 2). setCellStyle (cellStyle); 
                
row.createCell ((short) 3). setCellValue (element.getAttr4()); 
                } 

                
// Column is calculated as the sum of 
                
HSSFRow row = sheet.createRow (rowNum); 
                
row.createCell ((short) 0). setCellValue ("TOTAL:"); 
                
String formual = "SUM (D2: D" + rowNum + ")"; // D2 to D [rownum] cell Ki (count data) 
                
row.createCell ((short) 3). setCellFormula (formual); 

                
//} 
            
}
        };
    } 
Y en el jsp podemos poner lo siguiente

Código PHP:
<input type = "button" onclick = "javascript:window.location.href ='<%=request.getContextPath()%>/list/excel.htm'" value = "download excel" /> 

<
a href="<%=request.getContextPath()%>/excelmvc.htm" >Download in Excel doc</a>
<
br>
<
a href="<%=request.getContextPath()%>/list/excel.htm" >Download in Excel2</a> 
:distraido

Etiquetas: clase, excel, jsp, mvc, servlet, spring, string
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 13:42.