Beispiel: Importieren Sie relevante Daten (Excel -Datei) und bearbeiten Sie die relevanten Dateidaten.
XML -Dateikonfiguration
Konfigurieren Sie dann die Größe der Datei, die in der Spring XML -Datei hochgeladen werden soll
<!-Datei-Interception hochladen und die maximale Upload-Dateigröße 10m = 10*1024*1024 (b) = 10485760 Bytes-> <bean id = "multipartresolver"> <Eigenschaft Name = "MaxUploadsize
JSP -Schnittstellenkonfiguration
<div> <Form ID = "SourceFile" name = "SourceFile" action = "" method = "post" EncType = "MultiPart /Form-Data"> <Eingabe type = "button" value = "add" onclick = "addairline ()" /> <input style = "margin-left: 20px;" id = "Source_file" name = "SourceFile" type = "Datei" value = "Datei auswählen" /> <input style = "margin-links: 20px;" Data-loading-text = "Senden Sie nicht wiederholt" type = "value =" upload "onclick =" uppolicy () "> <input style =" margin-links: 20px; " type = "surug" value = "download shode" onclick = "return downloadTemplate ();"> </form> </div>
JS -Datei
function uppolicy () {document.sourceFile.action = "/login/Rictain/UploadCSV"; var subjekturl = document.getElementById ("SourceFile"). Attribute ["Aktion"]. Wert; $ .ajax ({type: "post", url: subgeurl, data: $ ('#sourceFile'). serialize (), dataType: "json", Erfolg: Funktion (Ergebnis) {var json = json.parse (result); }Controller -Konfiguration
@RequestMapping(value = "/uploadCSV" ,method = RequestMethod.POST) @ResponseBody public String uploadCSV(@RequestParam("sourceFile") MultipartFile sourceFile, HttpServletRequest request,HttpServletResponse response) throws IOException{ //Determine whether the file is empty if (sourceFile==null) return null; // den Dateinamen String name = sourceFile.getoriginalFileName () abrufen; // Bestimmen Sie weiter, ob die Datei leer ist (dh bestimmen Sie, ob ihre Größe 0 beträgt oder ob ihr Name null ist) Long Size = SourceFile.getSize (); if (name == null || (""). Equals (Name) && size == 0) return null; // Batchimport. Parameter: Dateiname, Datei. boolean b = batchimport (Name, SourceFile); JsonObject jsonObject = new JSONObject (); if (b) {jsonObject.put ("Flag", 0); JsonObject.put ("Erfolg", "Batch Import Excel erfolgreich!"); } else {jsonObject.put ("Flag", 1); JsonObject.put ("Erfolg", "Batch Import Excel fehlgeschlagen!"); } return jsonObject.toString (); }Die Schichtung ist nicht so detailliert, und die Verarbeitung erfolgt im Controller
public boolean batchimport (Zeichenfolge Name, MultiPartFile -Datei) {boolean b = false; // excel excelutils erstellen und verarbeiten readExcel = new excelutils (); // Excel analysieren und eine Sammlung von Kundeninformationen erhalten. Liste <otapolicymodel> cpolicyList = ReadExcel.getExcelinfo (Name, Datei); if (cpolicyList! = null) {b = true; } // Iterativ Informationen hinzufügen (Hinweis: Tatsächlich können Sie hier die CPORICYLIST -SET direkt als Parameter verwenden und das Foreach -Tag in der entsprechenden Zuordnungsdatei von MyBatis für die Batch -Addition hinzufügen.) Für (otapolicymodel customer: cpolicylist) {PolicyDao.insertotapolita (customer); } return b; }Werkzeugklasse Excelutils.Java
Das heißt, die Methoden, die von der ReadExcel.getExcelinfo (Name, Datei) aufgerufen wurden; Aussage in der obigen Methode und anderen verwandten Methoden
Apache POI bietet Java -Programmen APIs zum Lesen und Schreiben von Microsoft Office -Formatarchiven. Zunächst müssen wir jedoch die Excel -Version beurteilen und ein anderes Arbeitsbuch auswählen (die Version von 2003 entspricht HSSFWorkbook, und die Version von 2007 und höher ist XSSFWorkbook). Kopieren Sie im Allgemeinen zuerst die vom Client -Benutzer hochgeladene Datei auf die lokale Festplatte des Servers und lesen Sie sie dann aus dieser Kopierdatei durch, wodurch Datenverlust oder -befälle während des Lesens aufgrund von Netzwerkausnahmen oder anderen Bedingungen des Clients vermieden werden.
paket 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.sheet; import org.apache.poi.s.usmodel.workbook; import org.apache.poi.xssf.usmodel.xssfworkbook; importieren org.springframework org.springFramework.web.multipart.commons.CommonsMultipartFile; Import Java.io. */public class excelutils {// Gesamtzahl der Zeilen private int TotalRows = 0; // Gesamtzahl der Teile private Int Totalcells = 0; // Fehlermeldungsempfänger private Zeichenfolge Errormsg; // Konstruktionsmethode public excelutils () {} // Gesamtzahl der Zeilen public int getTotalrows () {return TotalRows;} // Gesamtzahl der Spalten public int getTotAlcells () {return TotalCells;} // Fehlermeldung öffentliche String GetERRORINFO () {{{{{{{{{{{{{{return erormsg; } / ** * Überprüfen Sie die Excel -Datei * @param filepath * @return * / public boolean valatexcel (String filepath) {if (filepath == null ||! (Wdwutil.isexcel2003 (filepath) || wdwutil false zurückgeben; } Return true; } /** * Lesen Sie die Excel -Datei und erhalten Sie die Kundeninformationssammlung * @param * @return * /publiclist <otapolicymodel> getExcelinfo (String -Dateiname, MultipartFile MFile) {// die multipartFile mit der Springdatei zu commonsmultipartFile -Typ -CommonsMultipile -multipart -multipart -multipart -multipart -multipart -multipile -multipart -multipart -multipart -multipart -multipart -multipart -multipart -multipart -multipart -multipart -multipart. // Lokale Speicherpfaddatei abrufen = neue Datei ("d: // fileUpload"); // Erstellen Sie ein Verzeichnis (sein Pfadname wird vom aktuellen Dateiobjekt angegeben, einschließlich aller erforderlichen übergeordneten Pfad). If (! File.exists ()) Datei.mkdirs (); // Erstellen Sie eine neue Dateidatei1 = neue Datei ("d: // FileUpload" + neues Datum (). GetTime () + ".xlsx"); // Schreiben Sie die hochgeladene Datei in die neu erstellte Datei Versuchen Sie {cf.getFileItem (). Write (Datei1); } catch (Ausnahme e) {e.printstacktrace (); } // Initialisieren Sie die Sammlung von Kundeninformationsliste <otapolicymodel> customerList = new ArrayList <otapolicymodel> (); // Initialisieren Sie den Eingangsstromeingabetream IS = NULL; Versuchen Sie {// Überprüfen Sie, ob der Dateiname qualifiziert ist, wenn (! valatexcel (Dateiname)) {return null; } // Standard, ob die Datei Version 2003 oder Version 2007 basiert, basierend auf dem Dateinamen boolean isExcel2003 = true; if (wdwutil.isexcel2007 (Dateiname)) {isexcel2003 = false; } // den Eingabestream basierend auf der neu erstellten Datei instanziieren. // Kundeninformationen basierend auf dem Inhalt in Excel CustomerList = getExcelinfo (IS, ISExcel2003) lesen; IS.CLOSE (); } catch (Ausnahme e) {e.printstacktrace (); } endlich {if (ist! = null) {try {is.close (); } catch (ioException e) {is = null; E. printstacktrace (); }} return customerList; } /** * Read customer information based on the content in excel* @param is Input stream* @param isExcel2003 Is excel 2003 or 2007 version* @return * @throws IOException */ public List<OTAPolicyModel> getExcelInfo(InputStream is,boolean isExcel2003){ List<OTAPolicyModel> customerList=null; Versuchen Sie { / ** Wählen Sie den Weg zum Erstellen eines Arbeitsbuchs gemäß der Version* / Arbeitsmappe wb = null; // Wenn Excel 2003 ist, wenn (isExcel2003) {wb = new HSSFWorkbook (ist); } else {// Wenn Excel 2007 WB = New XSSFWorkbook (ist); } // Lesen Sie die Informationen des Kunden in Excel CustomerList = ReadExcelValue (WB); } catch (ioException e) {e.printstacktrace (); } CustomerList zurückgeben; } /** * Lesen Sie die Informationen des Kunden in Excel * @param wb * @return * /private Liste <otapolicymodel> ReadExcelValue (Arbeitsbuch WB) {// Erhalten Sie das erste Shell -Blatt = wb.getsheetat (0); // Die Anzahl der Zeilen in Excel this.totalrows = Sheet.GetphysicalNumberofrows (); // Die Anzahl der Spalten in Excel erhalten (vermutlich gibt es Zeilen) if (TotalRows> = 1 && Sheet.getRow (0)! } List <otapolicymodel> otapolicymodellist = new ArrayList <otapolicymodel> (); Otapolicymodell otapolicymodell; // Loop Excel Rownummer aus der zweiten Zeile. Der Titel wird nicht gespeichert für (int r = 1; r <TotalRows; r ++) {row row = sheet.getrow (r); if (row == null) weiter; otapolicymodel = neuer otapolicymodel (); try {thread.currentThread (). Schlaf (1); } catch (interruptedException e) {e.printstacktrace (); } otapolicymodel.setPolicyid (System.currentTimemillis ()); // Sammlung von Excel für (int c = 0; c <this.totalcells; c ++) {cell cell = row.getCell (c); if (null! if (cell.getStringCellValue () == "All") {triptype = 0; } else if (cell.getStringCellValue (). Equals ("einfalls") {triptype = 10; } else if (cell.getStringCellValue (). Equals ("Round Trip") {triptype = 20; } else if (cell.getStringCellValue (). Equals ("einfache Direktflug") {triptype = 11; } else if (cell.getStringCellValue (). Equals ("Round Trip") {triptype = 12; } else if (cell.getStringCellValue (). Equals ("Round Trip") {triptype = 21; } else if (cell.getStringCellValue (). Equals ("Round Trip") {triptype = 21; } else if (cell.getStringCellValue (). Equals ("Round Trip") {triptype = 22; } otapolicymodel.setTriptype (triptType); // Robertyp} else if (c == 3) {Otapolicymodel Stadt} else if (c == 5) {otapolicymodel.setarrCity (cell.getStringCellValue ()); // Landing City} else if (c == 6) {otapolicymodel.setsalebegindatel (neu BigDecimal (cell.getNumericcellValue ()). SetScale (0, bigdecimal.round_half_down) .longValue (); // Verkaufsstartdatum} else if (c == 7) {Otapolicymodel.setsaleendDatel (New BigDecimal (cell.getNumericcellValue ()). SetScale (0, bigDecimal.round_half_down) .longValue ()); // Sales Enddatum} else if (c == 8) {Otapolicymodel.settravelBegindatel (new New BigDecimal (cell.getNumericcellValue ()). SetScale (0, bigDecimal.round_half_down) .longValue ()); // Reisestartdatum} else wenn (c == 9) {Otapolicymodel.settravelendDatel (New BigDecimal (cell.getNumericcellValue ()). SetScale (0, bigDecimal.round_half_down) .longValue ()); // Reisende Enddatum} else if (c == 10) {int CabinType = 9; if (cell.getStringCellValue (). Equals ("All") {CabinType = 9; } else if (cell.getStringCellValue (). Equals ("Economy Class") {CabinType = 1; } else if (cell.getStringCellValue (). Equals ("Business") {CabinType = 2; } else if (cell.getStringCellValue (). Equals ("First Class") {CabinType = 3; } otapolicymodel.setCobinType (CabinType); // CADRIFT -Level} else if (c == 11) {otapolicymodel.setfDType (cell.getStringCellValue (). Equals ("nach Preisspanne")? 1: 2); // Rebat Typ}}}}} if (c == 12) {{} rebat}} if (c == 12) {{{{} fall if (c == 12). otapolicymodel.setCabin (cell.getStringCellValue ()); // cat} else if (c == 13) {otapolicymodel.setPricebin (cell.getNumericcellValue ()); // Minimumspreis} else if (c == 14) {{{{{{ otapolicymodel.setPriceend (cell.getNumericcellValue ()); // maximaler Preis} else if (c == 15) {otapolicymodel.setlmoney (cell.getNumericcellValue ()); // Geld sparen} else if (c == 16) {{{{{{{{{{ otapolicymodel.setfpercent (cell.getNumericcellValue ()); // Vollpreis -Rabatt} else if (c == 17) {Otapolicymodel if (cell.getStringCellValue (). Equals ("Ja") {carrierlimit = 1; } else if (cell.getStringCellValue (). Equals ("no") {carrierlimit = 0; } else if (cell.getStringCellValue (). Equals ("None") {carrierlimit = 2; } otapolicymodel.setCarrierLimit (carrierLimit); // Rechnungsbetriebsbeschränkungen} else if (c == 19) {int transport = 2; if (cell.getStringCellValue (). Equals ("Ja") {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 ("unbegrenzt") {transport = 2; } otapolicymodel.setTransport (Transport); // Unterstützung des intermodalen Transports} else if (c == 20) {int SharedFlight = 2; if (cell.getStringCellValue (). Equals ("Ja") {SharedFlight = 1; } else if (cell.getStringCellValue (). Equals ("no") {SharedFlight = 0; } else if (cell.getStringCellValue (). Equals ("None") {SharedFlight = 2; } otapolicymodel.setsharedflight (SharedFlight); // Unterstützung mit gemeinsam genutzten Flügen} else if (c == 21) {otapolicymodel.setpStatus (cell.getStringCellValue (). Equals ("gültig")? 1: 2); // Status}, wenn (c == 22) {int faretype = 0; if (cell.getStringCellValue (). Equals ("privat") {faretype = 1; } else if (cell.getStringCellValue (). Equals ("Publikation") {faretype = 2; } else if (cell.getStringCellValue (). Equals ("Publikation") {faretype = 2; } else if (cell.getStringCellValue (). Equals ("All") {faretype = 0; } otapolicymodel.setFaretype (faretype); // Frachttyp} else if (c == 23) {otapolicymodel.setLimitprice (neuer BigDecimal (cell.getNumericcellValue). if (c == 24) {int limitTransit = 2; if (cell.getStringCellValue (). Equals ("All") {limittransit = 2; } else if (cell.getStringCellValue (). Equals ("anwendbar") {limittransit = 0; } else if (cell.getStringCellValue (). Equals ("nicht anwendbar") {limitTransit = 1; } otapolicymodel.setLimitTransit (limitTransit); // Übergangsgrenze} else if (c == 25) {otapolicymodel.setarrcity (cell.getStringCellValue ()); // Transition City} else if (c == 26) {int limitnation = 2; if (cell.getStringCellValue (). Equals ("All") {limitNation = 2; } else if (cell.getStringCellValue (). Equals ("anwendbar") {limitNation = 0; } else if (cell.getStringCellValue (). Equals ("nicht anwendbar") {limitNation = 1; } Otapolicymodel } // Kunden otapolicymodellist.add (otapolicymodel) hinzufügen; } return otapolicymodellist; }}Werkzeugklasse Wdwutil.java
Paket com.flight.inter.otaadapter.commons.util;/*** Erstellt von ling.zhang am 2016/12/29. */ public class wdwutil {// @Description: Ob es sich um Excel von 2003 handelt, Return true ist 2003 öffentlich statische boolean isexcel2003 (String filepath) {return filepath.matches ("^.+/. (? I) (xls) $"); } //@Beschreibung: Ob es sich um Excel von 2007 handelt, Return IS 2007Public static boolean isexcel2007 (String filepath) {return filepath.matches ("^.+//. (? I) (xlsx) $");}}HINWEIS: Aus Gründen der Lesen von Bequemlichkeit wird der obige Code zuerst mit der übergeordneten Methode und dann mit der untergeordneten Methode veröffentlicht. In der tatsächlichen Code -Bearbeitung wird die untergeordnete Methode im Allgemeinen zuerst bearbeitet und dann mit der übergeordneten Methode bearbeitet. Beispielsweise sollte das obige zuerst den Toolklassencode bearbeiten, dann den Service -Layer -Code bearbeiten und schließlich den Controller -Code bearbeiten.
Auf diese Weise ist der gesamte Prozess in Ordnung. Nehmen Sie es jetzt, um es zu testen
Weitere aufregende Inhalte finden Sie auf "Spring Upload und laden Sie ein spezielles Thema herunter" für eingehende Studien und Forschung.
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.