Spring MVC et fichier Excel via AbstractExcelView

Fichier Spring MVC et Excel via AbstractExcelView

Spring MVC est livré avec la classeAbstractExcelView pour exporter des données vers un fichier Excel via la bibliothèqueApache POI. Dans ce didacticiel, il montre l'utilisation de la classeAbstractExcelView dans l'application Spring MVC pour exporter des données vers un fichier Excel à télécharger.

1. Apache POI

Obtenez lesApache POI library pour créer le fichier Excel.

   
   
    org.apache.poi
    poi
    3.6
   

2. Manette

Une classe de contrôleur, générer des données factices pour la démonstration et obtenir le paramètre de demande pour déterminer quelle vue retourner. Si le paramètre de requête est égal à «EXCEL», renvoyez une vue Excel (AbstractExcelView).

Fichier: RevenueReportController.java

package com.example.common.controller;

import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.ServletRequestUtils;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class RevenueReportController extends AbstractController{

    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request,
        HttpServletResponse response) throws Exception {

        String output =
            ServletRequestUtils.getStringParameter(request, "output");

        //dummy data
        Map revenueData = new HashMap();
        revenueData.put("Jan-2010", "$100,000,000");
        revenueData.put("Feb-2010", "$110,000,000");
        revenueData.put("Mar-2010", "$130,000,000");
        revenueData.put("Apr-2010", "$140,000,000");
        revenueData.put("May-2010", "$200,000,000");

        if(output ==null || "".equals(output)){
            //return normal view
            return new ModelAndView("RevenueSummary","revenueData",revenueData);

        }else if("EXCEL".equals(output.toUpperCase())){
            //return excel view
            return new ModelAndView("ExcelRevenueSummary","revenueData",revenueData);

        }else{
            //return normal view
            return new ModelAndView("RevenueSummary","revenueData",revenueData);

        }
    }
}

3. AbstractExcelView

Créez une vue Excel en étendant la classeAbstractExcelView et remplacez la méthodebuildExcelDocument() pour remplir les données dans un fichier Excel. LeAbstractExcelView utilise l'API Apache POI pour créer le détail du fichier Excel.

Note
Pour plus de détails sur l'utilisation du POI Apache, reportez-vous àApache POI documentation

Fichier: ExcelRevenueReportView.java

package com.example.common.view;

import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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 ExcelRevenueReportView extends AbstractExcelView{

    @Override
    protected void buildExcelDocument(Map model, HSSFWorkbook workbook,
        HttpServletRequest request, HttpServletResponse response)
        throws Exception {

        Map revenueData = (Map) model.get("revenueData");
        //create a wordsheet
        HSSFSheet sheet = workbook.createSheet("Revenue Report");

        HSSFRow header = sheet.createRow(0);
        header.createCell(0).setCellValue("Month");
        header.createCell(1).setCellValue("Revenue");

        int rowNum = 1;
        for (Map.Entry entry : revenueData.entrySet()) {
            //create the row data
            HSSFRow row = sheet.createRow(rowNum++);
            row.createCell(0).setCellValue(entry.getKey());
            row.createCell(1).setCellValue(entry.getValue());
                }
    }
}

Note
Vous pouvez également utiliser lesAbstractJExcelView, qui utilisent lesJExcelAPI pour créer la même vue Excel, voir ceAbstractJExcelView example.

4. Configuration du ressort

Créez unXmlViewResolver pour la vue Excel.



  

    

    
        
            /WEB-INF/spring-excel-views.xml
        
    

Fichier: spring-excel-views.xml

   
   

5. Demo

Il génère un fichier Excel à télécharger par l'utilisateur.

SpringMVC-ExcelFile-Example

Télécharger le code source