Dans les applications pratiques, vous rencontrez souvent des situations où Excel est téléchargé ou téléchargé, tel que l'importation de données, le téléchargement des statistiques, etc. Pour résoudre ce problème, j'ai écrit un exemple de téléchargement simple basé sur SpringMVC, où le traitement d'Excel utilise le composant POI d'Apache.
Les principales dépendances sont les suivantes:
<dependency> <proupId> Commons-io </prouprid> <letifactive> commons-io </artifactid> <version> 2.4 </ version> </dependency> <dependency> <ProupId> Commons-fileupload </proupId> <Artifactid> Commons-fileupload </ artifactid> <version> 1.3.1 </DERVIERNEMENT> <GroupId> org.springframework </rombandid> <Artifactid> printemps-web </ artifactid> <version> 4.0.0.release </-version> </dependency> <Dependance> <ProupID> org.springframework </proupId> <Artifactid> printemps-webmvc </retifactid> <version> 4.0.0. <dependency> <proupId> org.apache.poi </prôdId> <Artifactid> poi </retifactid> <version> 3.10.1 </-version> </pedicisse>
Catégories de traitement connexes:
(I) Classe de contrôleur
package com.research.spring.Controller; Importer java.io.ioException; import java.util.arraylist; import java.util.hashmap; Importer java.util.list; importation java.util.map; import org.apache.poi.hssf.usermodel.hssfworkbook; import org.apache.poi.ss.usermodel.row; import org.apache.poi.ss.usermodel.sheet; import org.apache.poi.ss.usermodel.workBook; import org.springframework.stereType.Controller; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.requestParam; import org.springframework.web.multupar.MultiPartFile; import org.springframework.web.servlet.modelandView; import com.research.spring.model.useRinfo; import com.research.spring.view.excelView; @Controller @RequestMapping ("/ File") Classe publique FileController {/ ** * Excel Fichier Téléchargement de téléchargement * @param fichier * @return * / @RequestMapping ("/ upload") public ModelandView UpLoadexcel (@RequestParam ("File") Fichier multipartfile) {list <userInfo> list = news Arraylist <serverfo>;); // Ceci n'est traité qu'avec des fichiers avec des noms de fichiers, y compris "utilisateur", et le modèle utilise le modèle de téléchargement if (file.getoriginalFileName (). Contient ("user")) {try {workbook wb = new hssfworkbook (file.getInputStream ()); Feuille de feuille = wb.getSheetAt (0); for (int i = 1; i <= sheet.getLastRownm (); i ++) {row row = sheet.getRow (i); UserInfo info = new UserInfo (); info.setUsername (row.getCell (0) .getStringCellValue ()); info.setpassword (row.getCell (1) .getStringCellValue ()); list.add (info); }} catch (ioException e) {e.printStackTrace (); }} ModelAndView mav = new ModelAndView ("Content"); mav.addObject ("contenu", list.toString ()); retourner mav; } / ** * Traitement de téléchargement de fichiers Excel * / @RequestMapping ("/ Download") public ModelAndView downLaDeXcel () {list <userInfo> list = new ArrayList <UserInfo> (); UserInfo userInfo = new UserInfo (); userInfo.SetPassword ("0000"); userInfo.setUsername ("SDFAS"); list.add (userInfo); list.add (userInfo); list.add (userInfo); list.add (userInfo); Map <string, list <userInfo >> map = new hashmap <string, list <userInfo>> (); map.put ("Infolist", liste); ExcelView ve = new ExcelView (); retourner nouveau ModelandView (ve, map); }}(Ii) Classe d'entité
package com.research.spring.model; classe publique UserInfo {Private String Username; mot de passe de chaîne privé; public String getUserName () {return username; } public void setUsername (String username) {this.userName = username; } public String getPassword () {return mot de passe; } public void setPassword (String Motword) {this.password = mot de passe; } @Override public String toString () {return "userInfo [username =" + username + ", mot de passe =" + mot de passe + "]"; }}(Iii) Afficher la classe
Cette classe est utilisée lors du téléchargement et lors du rendu des pages au printemps, vous utilisez une classe de vue personnalisée pour effectuer un traitement lié à Excel.
package com.research.spring.view; import java.io.outputStream; import java.net.urlencoder; Importer java.util.list; importation java.util.map; Importer javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import org.apache.poi.hssf.usermodel.hssfworkbook; import org.apache.poi.ss.usermodel.cell; import org.apache.poi.ss.usermodel.row; import org.apache.poi.ss.usermodel.sheet; import org.springframework.web.servlet.view.document.absutractExcelView; import com.research.spring.model.useRinfo; / ** * Télécharger Excel View * * @author wdmcygah * * / public class ExcelView étend AbstractExcelView {@Override Protected void buildExcelDocument (map <string, objet> modèle, HSSFWorkbook Workbook, httpServletRequest request, httpservletResponse Response) Exception {@suppresswarnings (")") List <userInfo> list = (list <userInfo>) modèle.get ("infolist"); if (list! = null && list.size ()! = 0) {int len = list.size (); Feuille de feuille = workbook.CreateTheet (); // la première ligne de texte Description Row Row = Sheet.CreaterOW (0); Cell Cell = Row.CreateCell (0, Cell.Cell_Type_String); Cell.SetCellValue ("nom d'utilisateur"); Cell = Row.CreateCell (1, Cell.Cell_Type_String); Cell.SetCellValue ("Mot de passe"); // Ce qui suit est le contenu spécifique pour (int i = 0; i <len; i ++) {row = sheet.createrow (i + 1); Cell = Row.CreateCell (0, Cell.Cell_Type_String); Cell.SetCellValue (list.get (i) .getUserName ()); Cell = Row.CreateCell (1, Cell.Cell_Type_String); Cell.SetCellValue (list.get (i) .getPassword ()); }} réponse.setContentType ("application / vnd.ms-excel"); Response.SetcharAtterencoding ("UTF-8"); // Le nom de fichier est codé ici pour s'assurer que les caractères chinois sont affichés normalement lors de la chaîne de téléchargement filename = urlencoder.encode ("user.xls", "utf-8"); // La propriété de contenu-disposition est définie pour télécharger la réponse OutputStream OS = Response.getOutputStream (); Workbook.Write (OS); os.flush (); os.close (); }}(Iv) Fichiers de configuration principaux
Lors du téléchargement de fichiers, vous devez configurer la classe MultipartreSolver dans le fichier de configuration. Après la configuration, Spring passera automatiquement le fichier dans un objet multipartfile, puis le traitement correspondant peut être effectué. Par exemple, voir la classe Controller.
<? xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/mvc" xmlns: util = "http://www.springfrrameworkwork.org/schea" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/springframeworks-3.0.xschemma/contex http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd "> <context: composant-scan baskage =" com.research "/> <ank Value = "/ web-inf /" /> <propriété name = "suffix" value = ". jsp" /> </ bean> <! - Télécharger la configuration de l'analyseur de fichiers -> <bean id = "multipartResolver"> <propriété name = "DefsenCoding" value = "utf-8"> </ propriété> <! - upload File Taille Limit, Unit is Bytes -> <propriété Nom = "MAXUPLOADSIZE" Value = "5242880000000"> </ propriété> <! - Chemin temporaire pour télécharger le fichier, il sera automatiquement supprimé après le téléchargement -> <propriété name = "uploadTempDir" value = "upload / temp"> </ propriété> </ bean> </ beans>
(V) Page de test
<html> <éad- head> <meta http-equiv = "contenu-type" contenu = "text / html; charset = utf-8" /> </ head> <pody> <h3> tester la fonction de téléchargement excel </h3> <form action = "file / download.htm" enctype = "multipart / form-data" method = "post"> <fant type = "value" Excel "> </ entrée> </ form> <h3> Testez la fonction upload Excel </h3> <formulaire formulaire =" file / upload.htm "ENCTYPE =" multipart / form-data "Method =" Post "> <entrée type =" file "name =" file "> </put> <intrut type =" soumi "value =" upload excel "> </put> </ </ Form>
Si vous souhaitez voir le code source complet, vous pouvez le vérifier dans mon référentiel GitHub. Parmi eux, le téléchargement de fichiers ne traite que des fichiers qui répondent au modèle de téléchargement. Pour traiter d'autres fichiers, vous devez l'implémenter vous-même. Le test de code a réussi sans erreur.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.