Exemple: Importez des données pertinentes (fichier Excel) et modifiez les données de fichier pertinentes.
Configuration du fichier XML
Configurez ensuite la taille du fichier à télécharger dans le fichier Spring XML
<! - Téléchargez l'interception du fichier, définissez la taille maximale du fichier de téléchargement 10m = 10 * 1024 * 1024 (b) = 10485760 octets -> <bean id = "MultipartResolver"> <propriété name = "maxuploadSize" value = "10485760" /> </ bean>
Configuration de l'interface JSP
<div> <form id = "sourcefile" name = "sourcefile" action = "" Method = "post" EncType = "multipart / form-data"> <input type = "Button" value = "add" onclick = "addairline ()" /> <input style = "margin-left: 20px;" id = "source_file" name = "sourcefile" type = "file" value = "select file" /> <input style = "margin-left: 20px;" data-wading-text = "ne pas soumettre de manière répétée" type = "soumission" value = "upload" onclick = "uppolicy ()"> <input style = "margin-left: 20px;" type = "soumi" value = "Télécharger le modèle" onclick = "return downloadTemplate ();"> </ form> </div>
fichier js
fonction uppolicy () {document.sourcefile.action = "/ login / stratégie / uploadcsv"; var soumerl = document.getElementById ("sourcefile"). Attributs ["Action"]. Valeur; $ .ajax ({type: "post", URL: soumerl, data: $ ('# sourcefile'). serialize (), dataType: "json", succès: fonction (result) {var json = json.parse (result); if (json.flag == "0" || json.flag == "1") {allert (table }Configuration du contrôleur
@RequestMapping (value = "/ uploadcsv", méthode = requestMethod.post) @ResponseBody public String uploadcsv (@RequestParam ("SourceFile") MultiartFile SourceFile, httpServletRequest request, httpservletResponse réponse) lance ioException {// déterminer si le fichier est vide if (sourcefile == Null) Retour null; // Obtenez le nom de fichier String name = sourceFile.getoriginalFileName (); // Déterminez en outre si le fichier est vide (c'est-à-dire déterminer si sa taille est 0 ou si son nom est nul) Long Taille = sourceFile.getSize (); if (name == null || (""). equals (name) && size == 0) return null; // Importation par lots. Paramètres: nom de fichier, fichier. Boolean B = BatchIMPORT (nom, sourcefile); JSONObject JSONObject = new JSONObject (); if (b) {jsonObject.put ("Flag", 0); jsonObject.put ("Success", "Batch Import Excel Successfust!"); } else {jsonObject.put ("Flag", 1); jsonObject.put ("Success", "Batch Import Excel a échoué!"); } return jsonObject.toString (); }La superposition n'est pas si détaillée et le traitement est effectué dans le contrôleur
BatchImport booléen public (nom de chaîne, fichier multipartfile) {boolean b = false; // Créer et procéder Excel Excelutils ReadExcel = new Excelutils (); // analyser Excel et obtenir une collection d'informations client. List <otapolicymodel> cpolicyList = readExcel.getExceLinfo (nom, fichier); if (cpolicyList! = null) {b = true; } // Ajouter itérativement des informations (Remarque: En fait, vous pouvez utiliser directement l'ensemble cpolicylist comme paramètre ici, et utiliser la balise foreach pour ajouter dans le fichier de mappage correspondant de MyBatis pour l'ajout de lots.) Pour (otapolicymodel client: cpolicyList) {PolicyDao.Insertotapolicy (client); } return b; }Classe d'outils Excelutils.java
C'est-à-dire les méthodes appelées par readExcel.getExceLinfo (nom, fichier); déclaration dans la méthode ci-dessus et d'autres méthodes connexes
Apache POI fournit des API aux programmes Java pour lire et écrire des archives au format Microsoft Office. Cependant, tout d'abord, nous devons juger la version Excel et choisir un classeur différent (la version 2003 correspond à HSSFWorkBook, et la version 2007 et ci-dessus correspond à XSSFWorkBook). De plus, de manière générale, copiez d'abord le fichier téléchargé par l'utilisateur client vers le disque local du serveur, puis lisez-le à partir de ce fichier de copie, évitant ainsi la perte ou la corruption de données pendant la lecture en raison d'exceptions réseau ou d'autres conditions du client.
package com.flight.inter.otaadapter.commons.util; import com.flight.inter.otaadapter.model.otapolicymodel; import org.apache.poi.hssf.usermodel.hssfworkbook; import org.apache.poi.ss.usermodel. org.apache.poi.ss.usermodel.sheet; import org.apache.poi.ss.usermodel.workbook; import org.apache.poi.xssf.usermodel.xssfworkbook; import org.springframework.web.multipart.multartfile; org.springframework.web.multiparpart.commons.commonsMultupartfile; import java.io. *; import java.math.bigdecimal; import java.util.arraylist; import java.util.date; import java.util.list; / ** * créé par ling.zhang sur 2016/12/29. * / classe publique Excelutils {// Nombre total de lignes privées int totalrows = 0; // Nombre total de pièces private int totalcells = 0; // Récepteur de messages d'erreur String privé errormsg; // Méthode de construction public Excelutils () {} // Obtenir le nombre total de lignes public int GetTotalRows () {return totalrows;} // obtenir le nombre total de colonnes publiques int getTotalCells () {return totalcells;} // obtenir le message d'erreur de chaîne publique getErrorinfo () {return errormsg; } / ** * Vérifier le fichier Excel * @param filepath * @return * / public boolean validateExcel (String Filepath) {if (filepath == null ||! (Wdwutil.isexcel2003 (filepath) || wdwutil.isexcel2007 (filepath))) {errormsg = "Le nom de fichier n'est pas excel"; retourne false; } return true; } / ** * Lisez le fichier Excel et obtenez la collection d'informations client * @param * @return * / Liste publique <otapolicyModel> GetExceLinfo (nom de fichier de chaîne, Multiartfile Mfile) {// Converti le type multipartfile téléchargé par le fichier printan // obtient un fichier de chemin de stockage local Fichier = nouveau fichier ("d: // fileupload"); // Créer un répertoire (son chemin d'accès est spécifié par l'objet de fichier actuel, y compris tout chemin parent requis.) If (! File.exists ()) file.mkDirs (); // Créer un nouveau fichier de fichier Fichier1 = nouveau fichier ("d: // fileupload" + new Date (). GetTime () + ".xlsx"); // Écrivez le fichier téléchargé dans le fichier nouvellement créé essayez {cf.getFileItem (). Write (file1); } catch (exception e) {e.printStackTrace (); } // Initialisez la collection de la liste des informations du client <TapolicyModel> CustomerList = new ArrayList <TapolicyModel> (); // Initialiser le flux d'entrée InputStream est = null; Essayez {// Vérifiez si le nom de fichier est qualifié si (! ValidateExcel (nom de fichier)) {return null; } // par défaut si le fichier est la version 2003 ou la version 2007 basée sur le nom de fichier booléen isExcel2003 = true; if (wdwutil.isexcel2007 (nom de fichier)) {iSExcel2003 = false; } // Instancier le flux d'entrée en fonction du fichier nouvellement créé est = new FileInputStream (file1); // Lire les informations clients en fonction du contenu dans Excel CustomerList = GetExceLinfo (IS, isExcel2003); is.close (); } catch (exception e) {e.printStackTrace (); } enfin {if (is! = null) {try {is.close (); } catch (ioException e) {is = null; e.printStackTrace (); }} return CustomerList; } / ** * Lire les informations clients basées sur le contenu dans Excel * @param est un flux d'entrée * @param isExcel2003 est Excel 2003 ou 2007 version * @return * @throws ioexception * / public list <otapolicymodel> getExceLinfo (inputStream is, boolean isExcel2003) {list <otapolicymodel> clientlist = null; Essayez {/ ** Sélectionnez la façon de créer un classeur en fonction de la version * / classeur wb = null; // lorsque Excel est 2003 if (iSExcel2003) {wb = new HSSFWorkBook (IS); } else {// Quand Excel est 2007 wb = nouveau xssfworkbook (IS); } // Lisez les informations du client dans Excel CustomerList = ReadExcelValue (WB); } catch (ioException e) {e.printStackTrace (); } return CustomerList; } / ** * Lisez les informations du client dans Excel * @param wb * @return * / Liste privée <otapolicyModel> readExcelValue (Workbook WB) {// Obtenez la première feuille de feuille de shell = wb.getsheetat (0); // Obtenez le nombre de lignes dans Excel this.totalrows = sheet.getPhysicalNumberofrows (); // obtient le nombre de colonnes dans Excel (vraisemblablement il y a des lignes) if (totalrows> = 1 && sheet.getRow (0)! = Null) {this.totalcells = sheet.getrow (0) .getPhysicalNumberOfCells (); } List <otapolicymodel> otapolicymodellist = new ArrayList <otapolicyModel> (); Otapolicymodel otapolicymymodel; // Loop Excel Row Number, à partir de la deuxième ligne. Le titre n'est pas stocké pour (int r = 1; r <totalrows; r ++) {row row = sheet.getRow (r); if (row == null) continuer; otapolicymodel = new otapolicymodel (); essayez {thread.currentThread (). Sleep (1); } catch (InterruptedException e) {e.printStackTrace (); } otapolicymodel.setPolicyId (System.CurrentTimemillis ()); // Collection d'Excel pour (int c = 0; c <this.totalcells; c ++) {cell cell = row.getCell (c); if (null! = cell) {if (c == 0) {otapolicymodel.setsource (cell.getStringCellValue ()); // fournisseur} else if (c == 1) {otapolicymodel.setVendee (cell.getStringCellValue (); // canal de sortie} else if (c == 2) {int if (cell.getStringCellValue () == "all") {tripType = 0; } else if (Cell.getStringCellValue (). Equals ("SEUX-WAY")) {triptype = 10; } else if (cell.getStringCellValue (). Equals ("aller-retour")) {triptype = 20; } else if (Cell.getStringCellValue (). Equals ("Flight direct à un chemin")) {triptype = 11; } else if (Cell.getStringCellValue (). Equals ("aller-retour")) {triptype = 12; } else if (cell.getStringCellValue (). Equals ("aller-retour")) {triptype = 21; } else if (cell.getStringCellValue (). Equals ("aller-retour")) {triptype = 21; } else if (cell.getStringCellValue (). Equals ("aller-retour")) {triptype = 22; } otapolicymodel.settriptype (triptype); // type itinéraire} else if (c == 3) {otapolicymodel.setCarrier (cell.getStringCellValue ()); // airline code} else if (c == 4) {otapolicymodel.settepcity (cell.getStStStre ville} else if (c == 5) {otapolicyModel.setarrCity (Cell.getStringCellValue ()); // Landing City} else if (c == 6) {otapolicymodel.setsalebegindatel (new Bigdecimal (cell.getNumericCellValue ()). SetScale (0, bigdecimal.round_half_down) .LongValue ()); // Date de début de vente} else if (c == 7) {otapolicymodel.setsaleenddatel (new Bigdecimal (cell.getNumericCellValue ()). SetScale (0, bigdecimal.round_half_down) .LongValue ()); // Date de fin de vente} else if (c == 8) {otapolicymodel.settravelbegindatel (new Bigdecimal (cell.getNumericCellValue ()). SetScale (0, bigdecimal.round_half_down) .LongValue ()); // Date de début de voyage} else if (c == 9) {otapolicymodel.settravelenddatel (New Bigdecimal (cell.getNumericCellValue ()). SetScale (0, bigdecimal.round_half_down) .LongValue ()); // Date de fin de voyage} else if (c == 10) {int cabmype = 9; if (Cell.getStringCellValue (). Equals ("all")) {cababType = 9; } else if (Cell.getStringCellValue (). Equals ("Economy Class")) {cababType = 1; } else if (Cell.getStringCellValue (). Equals ("Business")) {cababType = 2; } else if (Cell.getStringCellValue (). Equals ("First Class")) {cababType = 3; } otapolicymodel.setCobintype (cabineType); // Niveau de cadrift} else if (c == 11) {otapolicyModel.setfdType (Cell.getStringCellValue (). otapolicymodel.setCabin (Cell.getStringCellValue ()); // Cat} else if (c == 13) {otapolicymodel.setpricebegin (Cell.getnumericCellValue ()); // prix minimum} else if (c == 14) { otapolicyModel.SetPriceDend (Cell.GetNumericCellValue ()); // Prix maximum} else if (c == 15) {otapolicymodel.setlmoney (Cell.getNumericCellValue ()); // économiser de l'argent} else if (c == 16) { otapolicymodel.setfpercent (Cell.GetNumericCellValue ()); // Rebat à prix plein} else if (c == 17) {otapolicymodel.setftPercent (Cell.getNumericCellValue ()); // s'il vous plaît rebate} else if (c == 18) {int CarrierLimit = 2; if (cell.getStringCellValue (). Equals ("Oui")) {CarrierLimit = 1; } else if (Cell.getStringCellValue (). Equals ("no")) {CarrierLiMit = 0; } else if (Cell.getStringCellValue (). Equals ("Aucun")) {CarrierLiMit = 2; } otapolicymodel.setCarrierLimit (CarrierLimit); // Restrictions de la compagnie aérienne facture} else if (c == 19) {int transport = 2; if (Cell.getStringCellValue (). Equals ("Oui")) {Transport = 1; } else if (Cell.getStringCellValue (). equals ("no")) {transport = 0; } else if (Cell.getStringCellValue (). equals ("no")) {transport = 0; } else if (Cell.getStringCellValue (). equals ("no")) {transport = 0; } else if (Cell.getStringCellValue (). equals ("no")) {transport = 0; } else if (Cell.getStringCellValue (). equals ("no")) {transport = 0; } else if (Cell.getStringCellValue (). equals ("no")) {transport = 0; } else if (Cell.getStringCellValue (). Equals ("Unlimited")) {transport = 2; } otapolicymodel.settransport (transport); // prend en charge le transport intermodal} else if (c == 20) {int sharedflight = 2; if (Cell.getStringCellValue (). Equals ("Oui")) {SharedFlight = 1; } else if (Cell.getStringCellValue (). Equals ("no")) {sharedflight = 0; } else if (cell.getStringCellValue (). Equals ("Aucun")) {SharedFlight = 2; } otapolicymodel.setSharedFlight (SharedFlight); // prend en charge les vols partagés} else if (c == 21) {otapolicymodel.setpstatus (cell.getStringCellValue (). if (Cell.getStringCellValue (). Equals ("Private")) {farEtype = 1; } else if (Cell.getStringCellValue (). Equals ("Publication")) {fareType = 2; } else if (Cell.getStringCellValue (). Equals ("Publication")) {fareType = 2; } else if (Cell.getStringCellValue (). Equals ("all")) {fareType = 0; } otapolicymodel.setfaretype (fareType); // type de fret} else if (c == 23) {otapolicyModel.setlimitPrice (new BigDecimal (Cell.getnumericCellValue (). if (c == 24) {int limitTransit = 2; if (cell.getStringCellValue (). Equals ("all")) {limitTransit = 2; } else if (cell.getStringCellValue (). Equals ("Applicable")) {limitTransit = 0; } else if (Cell.getStringCellValue (). Equals ("Non applicable")) {limitTransit = 1; } otapolicymodel.setLimitTransit (limiteTransit); // limite de transition} else if (c == 25) {otapolicymodel.setarrcity (cell.getStringCellValue ()); // transition} else if (c == 26) {int limite = 2; if (cell.getStringCellValue (). Equals ("all")) {limiteNation = 2; } else if (Cell.getStringCellValue (). Equals ("Applicable")) {limitNation = 0; } else if (cell.getStringCellValue (). Equals ("Non applicable")) {limiteNation = 1; } otapolicymodel.setlimitnation (limite); // limite de nationalité} else if (c == 27) {otapolicymodel.setarrcity (cell.getStringCellValue ()); // nationalité} else if (c == 28) {otapolicymodel.SetUnerName (Cell.getStringCellValue ()); } // Ajouter le client otapolicymodellist.add (otapolicymodel); } Retour otapolicyModellist; }}Classe d'outils wdwutil.java
package com.flight.inter.otaadapter.commons.util; / ** * créé par Ling.zhang le 2016/12/29. * / classe publique wdwutil {// @description: si c'est Excel de 2003, return true est 2003 public static booléen isExcel2003 (string filepath) {return filepath.matches ("^. + /. (? i) (xls) $"); } // @ Description: Que ce soit Excel de 2007, Retour True est 2007Public static boolean isExcel2007 (String filepath) {return filepath.matches ("^. + //. (? I) (xlsx) $");}}Remarque: Par souci de commodité, le code ci-dessus est d'abord publié avec la méthode parent, puis la méthode enfant. Dans l'édition de code réelle, la méthode de l'enfant est généralement modifiée, puis modifiée avec la méthode parent. Par exemple, ce qui précède doit d'abord modifier le code de classe d'outils, puis modifier le code de couche de service et enfin modifier le code du contrôleur.
De cette façon, tout le processus est OK. Prenez-le pour le tester maintenant
Pour un contenu plus excitant, veuillez cliquer sur "Spring Télécharger et télécharger un sujet spécial" pour une étude et une recherche approfondies.
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.