In praktischen Anwendungen begegnen Sie häufig Situationen, in denen Excel hochgeladen oder heruntergeladen wird, z. B. Daten importieren, Statistiken herunterladen usw., um dieses Problem zu lösen, ein einfaches Upload -Download -Beispiel basierend auf SpringMVC, in dem die Verarbeitung von Excel die POI -Komponente von Apache verwendet.
Die Hauptabhängigkeiten sind wie folgt:
<Depepy> <gruppe> commons-io </GroupId> <artifactId> commons-io </artifactId> <version> 2.4 </Version> </abhängig> <abhängigkeit> <gruppe> commons-fileUpload </GroupID> <artifactId> commons-fileUpload </artifactid> 1.3.1 </artifactId> </fileUpoad </artifactid> 1.3.1 </artifactID> </fileUpoad </artifactid> 1.3.1 </artifactId> </artifactid> 1.3.1; <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.0.0.RELEASE</version> </dependency> <Depopenty> <gruppe> org.apache.poi </Groupid> <artifactId> poi </artifactId> <version> 3.10.1 </Version> </abhängig>
Verwandte Verarbeitungskategorien:
(I) Controller -Klasse
Paket com.research.spring.controller; importieren java.io.ioException; Import Java.util.ArrayList; import Java.util.hashMap; importieren java.util.list; import Java.util.map; import org.apache.poi.hssf.usermodel.hssfworkbook; import org.apache.poi.s.usermodel.row; import org.apache.poi.s.usermodel.sheet; import org.apache.poi.s.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.multipart.multipartFile; import org.springframework.web.servlet.ModelandView; import com.research.spring.model.userinfo; com.research.spring.view.excelview; @Controller @RequestMapping ("/Datei") öffentliche Klasse FileConTroller {/** * Excel -Datei Upload -Verarbeitung * @param -Datei * @Return */@RequestMapping ("/Upload") public modelAndView Uplloadexcel (@RequestParam ("Datei"). // Dies wird nur mit Dateien mit Dateinamen wie "Benutzer" verarbeitet, und die Vorlage verwendet die Download -Vorlage if (Datei.getOriginalFileName (). Enthält ("Benutzer") {Try {Workbook WB = New HSSFWorkbook (Datei.getInputStream ()); Blatt Blatt = wb.getsheetat (0); für (int i = 1; i <= sheet.getLastrownum (); i ++) {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 ("Inhalt"); mav.addObject ("content", list.toString ()); MAV zurückgeben; }/*** Excel -Datei Download -Verarbeitung*/@RequestMapping ("/download") public modelAndView downloadexcel () {list <userInfo> list = new ArrayList <BeduTeInfo> (); UserInfo userInfo = new UserInfo (); userInfo.setPassword ("0000"); userInfo.SetUnername ("SDFAS"); list.add (userInfo); list.add (userInfo); list.add (userInfo); list.add (userInfo); Karte <String, Liste <userInfo >> map = new HashMap <String, Liste <userInfo >> (); MAP.PUT ("Infinolist", Liste); Excelview ve = new excelview (); Neue modelAndView zurückgeben (ve, map); }}(Ii) Entitätsklasse
Paket com.research.spring.model; public class userInfo {private String -Benutzername; privates Zeichenfolgenkennwort; public String getUnername () {return userername; } public void setUnername (String -Benutzername) {this.username = userername; } public String getPassword () {Kennwort zurückgeben; } public void setPassword (String -Passwort) {this.password = password; } @Override public String toString () {return "userInfo [userername =" + userername + ", password =" + password + "]"; }}(Iii) Klasse anzeigen
Diese Klasse wird beim Herunterladen verwendet, und wenn Sie Seiten im Frühjahr rendern, verwenden Sie eine benutzerdefinierte Ansichtsklasse, um eine Excel-bezogene Verarbeitung durchzuführen.
Paket com.research.spring.view; importieren java.io.outputstream; importieren java.net.urlencoder; importieren java.util.list; import Java.util.map; importieren javax.servlet.http.httpServletRequest; importieren javax.servlet.http.httpServletResponse; import org.apache.poi.hssf.usermodel.hssfworkbook; import org.apache.poi.s.usermodel.cell; import org.apache.poi.s.usermodel.row; import org.apache.poi.s.usermodel.sheet; import org.springframework.web.servlet.view.document.abstractExcelview; import com.research.spring.model.userinfo; / ** * Download Excel View * * @Author Wdmcygah * */ public class ExcelView erweitert AbstractExcelView {@Override Protected void Buildexceldocument (MAP <String, Object> Modell, HSSFWorkbook Workbook, HttpServletRequest -Anfrage, HttpServletRespect) Throws -Antwort {SuppresSpresSpresSpresSpresSpressing (ukttpServletRespection)) Throws -Antwort {SuppresSpresSpressing @SuppresSpresSpressing @SuppresSpresSpressing @SuppresSpressing | LIST <UserInfo> list = (list <userInfo>) model.get ("Infolist"); if (list! = null && list.size ()! = 0) {int len = list.size (); Blatt = Arbeitsbuch.CreateSheet (); // Die erste Textzeile der Textbeschreibung row = bahnblatt.createur (0); Cell Cell = row.createCell (0, cell.cell_type_string); cell.setCellValue ("Benutzername"); cell = row.createCell (1, cell.cell_type_string); cell.setCellValue ("Passwort"); // Folgendes ist der spezifische Inhalt für (int i = 0; i <len; i ++) {row = Sheet.CreateRow (i+1); cell = row.createcell (0, cell.cell_type_string); cell.setCellValue (list.get (i) .getUerName ()); cell = row.createCell (1, cell.cell_type_string); cell.setCellValue (list.get (i) .getPassword ()); }} response.setContentType ("application/vnd.ms-excel"); response.setcharactercoding ("utf-8"); // Der Dateiname wird hier codiert, um sicherzustellen, dass die chinesischen Zeichen normalerweise während des Download-String-Dateiname = urlencoder.encode ("user.xls", "utf-8") angezeigt werden. // Inhaltsdispositionseigenschaft soll die Antwort herunterladen. OutputStream os = response.getOutputStream (); Workbook.Write (OS); os.flush (); os.close (); }}(Iv) Hauptkonfigurationsdateien
Beim Hochladen von Dateien müssen Sie die Multipartresolver -Klasse in der Konfigurationsdatei konfigurieren. Nach der Konfiguration übergibt Spring die Datei automatisch in ein MultipartFile -Objekt, und dann kann die entsprechende Verarbeitung durchgeführt werden. Siehe beispielsweise die Controller -Klasse.
<? xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/mvc" xmlns: util = "http://www.spingframework XSI: Schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.spingframework.org/sschema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd "> <context: component-scan base-package =" com.research "/> <bean> <Property name =" viewClass "value =" org.springframework.web.Servlet.view. name = "prefix" value = "/web-inf/"/> <Eigenschaft name = "suffix" value = ". jsp"/> </bean> <!-Datei-Parser-Konfiguration hochladen-> <bean id = "multipartresolver"> <Eigenschaft name = "DefaultCoding" Value = "Utf-8" </</</</</</</</</</</</</</</</</<! name = "maxUploadSize" value = "5242880000000"> </property> <!-Temporärer Pfad zum Hochladen von Datei wird nach dem Hochladen automatisch gelöscht-> <Eigenschaft name = "uploadTempdir" value = "Upload/temp"> </property> </bean> </beans>
(V) Testseite
<html> <head> <meta http-äquiv = "content-type" content = "text/html; charSet = utf-8"/> </head> <body> <h3> Testen Sie die Download Excel-Funktion </H3> <Form Action = "Datei/download.htm" EnctmTy "value =" multipart ". Excel "> </input> </form> <h3> Testen Sie die Funktion" upload ".
Wenn Sie den vollständigen Quellcode sehen möchten, können Sie ihn in meinem GitHub -Repository überprüfen. Unter ihnen verarbeitet das Hochladen von Dateien nur Dateien, die die Download -Vorlage erfüllen. Um andere Dateien zu verarbeiten, müssen Sie sie selbst implementieren. Der Code -Test wurde ohne Fehler bestanden.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.