Contoh: Impor data yang relevan (file excel), dan edit data file yang relevan.
Konfigurasi File XML
Kemudian konfigurasikan ukuran file yang akan diunggah dalam file XML Spring
<!-Unggah Interception File, atur Ukuran File Upload Maksimum 10m = 10*1024*1024 (b) = 10485760 byte-> <bean id = "multipartresolver"> <nama properti = "MAXUPLOADSIZE" Value = "10485760" /< /bean> Maxuploadsize "value =" 10485760 " /< /bean> < /bean>
Konfigurasi Antarmuka JSP
<Div> <form id = "sourceFile" name = "sourceFile" Action = "" Method = "POST" ENCTYPE = "multipart /form-data"> <input type = "tombol" value = "tambahkan" onclick = "addairline ()" /> <input style = "margin-left: 20px;" id = "source_file" name = "sourceFile" type = "file" value = "pilih file" /> <input style = "margin-left: 20px;" data-loading-text = "Jangan mengirimkan berulang kali" type = "kirim" value = "unggah" ontClick = "uppolicy ()"> <input style = "margin-left: 20px;" type = "kirim" value = "download template" onClick = "return downloadTemplate ();"> </form> </div>
file js
function Uppolicy () {document.sourceFile.action = "/Login/Policy/UpoadCsv"; var submitUrl = document.geteLementById ("sourceFile"). Atribut ["Action"]. Nilai; $ .Ajax ({type: "Post", url: submituUrl, data: $ ('#sourceFile'). Serialize (), DataType: "json", Success: function (hasil) {var json = json.parse (hasil); if (json.flag == "0" || json.flag == ") {JSON.FLAG ==" 0 "|| json.flag ==") {JSON.FLAG == "0" || json.flag == ") {JSON.FLAG ==" 0 " }Konfigurasi Pengontrol
@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; // Dapatkan nama file string nama = sourceFile.getoriginalFileName (); // Tentukan lebih lanjut apakah file kosong (yaitu, tentukan apakah ukurannya 0 atau apakah namanya null) ukuran panjang = sourceFile.getsize (); if (name == null || (""). Equals (name) && size == 0) return null; // Impor Batch. Parameter: Nama file, file. Boolean B = BatchImport (Nama, SourceFile); JsonObject jsonObject = new jsonObject (); if (b) {jsonobject.put ("flag", 0); jsonobject.put ("Success", "Batch Impor berhasil Excel!"); } else {jsonobject.put ("flag", 1); jsonObject.put ("Success", "Batch Impor Excel Gagal!"); } return jsonobject.toString (); }Lapisannya tidak terlalu terperinci, dan pemrosesan dilakukan di pengontrol
BATCHIMPORT PUBLIK BOOLEAN (Nama String, File MultipartFile) {boolean b = false; // Buat dan proses excel excelutils readexcel = new excelutils (); // Parse Excel dan dapatkan koleksi informasi pelanggan. Daftar <OtapolicyModel> cpolicylist = readexcel.getExcelinfo (name, file); if (cpolicylist! = null) {b = true; } // Tambahkan informasi secara iteratif (Catatan: Faktanya, Anda dapat langsung menggunakan set cpolicylist sebagai parameter di sini, dan menggunakan tag foreach untuk menambahkan file pemetaan mybatis yang sesuai untuk penambahan batch.) Untuk (pelanggan otapolicymodel: cpolicylist) {policydao.insertoTotapolicy (pelanggan); } return b; }Kelas Alat Excelutils.java
Artinya, metode yang disebut oleh readexcel.getExcelinfo (nama, file); Pernyataan dalam metode di atas dan metode terkait lainnya
Apache POI menyediakan API untuk program Java untuk membaca dan menulis arsip format Microsoft Office. Namun, pertama -tama, kita harus menilai versi Excel dan memilih buku kerja yang berbeda (versi 2003 sesuai dengan HSSFWorkbook, dan versi 2007 dan di atas sesuai dengan XSSFWorkbook). Selain itu, secara umum, salin pertama file yang diunggah oleh pengguna klien ke disk lokal server, dan kemudian membacanya dari file salinan ini, sehingga menghindari kehilangan data atau korupsi selama membaca karena pengecualian jaringan atau kondisi lain dari klien.
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.ss.serModel.cell.cell ;apache.apache.apache.poi.ss.ss.serModel.cell.apaphe ;apache.apache.apache.poi.ss.ss.s.usermodel.cell; org.apache.poi.ss.usermodel.sheet; impor org.apache.poi.ss.usermodel.workbook; impor org.apache.poi.xssf.usermodel.xssfworkbook; impor org.springframework.web.multipart.multipartfile; org.springframework.web.multipart.commons.Commonsmultipartfile; import java.io.*; impor java.math.bigdecimal; */Kelas Publik Excelutils {// Jumlah Total Baris Int TotalRows Pribadi = 0; // Jumlah total potongan int private TotalCells = 0; // Penerima Pesan Kesalahan Private String ErrorMsg; // metode konstruksi public excelutils () {} // Dapatkan jumlah total baris int getTotalRows () {return totalRows;} // Dapatkan jumlah total kolom int getTotalCells publik () {return totalCells;} // Dapatkan pesan kesalahan geterrorinfo () {return errorrorsg; } / ** * Verifikasi file excel * @param filepath * @return * / public boolean validateexcel (string filePath) {if (filePath == null ||! (Wdwutil.isexcel2003 (filepath) || wdwutil.isexcel2007 (filepath)) {filePath) || wdwutil.isexcel2007 (filepath)) {filepath) || wdwutil.isexcel2007 (FilePath)) {fiforror); mengembalikan false; } return true; } /** * Baca file excel dan dapatkan koleksi informasi pelanggan * @param * @return * /Daftar publik <tapapolicymodel> getExcelInfo (string fileName, multipartfile mfile) {// convert the MultipartFile yang diunggah oleh commonsmultipartfile) cowtipile; // Dapatkan file jalur penyimpanan lokal = file baru ("d: // fileupload"); // Buat direktori (pathname -nya ditentukan oleh objek file saat ini, termasuk jalur induk yang diperlukan.) If (! File.exists ()) file.mkdirs (); // Buat file file baru file1 = file baru ("d: // fileupload" + tanggal baru (). GetTime () + ".xlsx"); // Tulis file yang diunggah ke file yang baru dibuat coba {cf.getFileItem (). Tulis (file1); } catch (Exception e) {E.PrintStackTrace (); } // Inisialisasi pengumpulan daftar informasi pelanggan <tapapolicymodel> customerlist = new ArrayList <tapapolicymodel> (); // inisialisasi input stream inputStream adalah = null; Coba {// Verifikasi apakah nama file memenuhi syarat jika (! ValidateExcel (fileName)) {return null; } // default apakah file adalah versi 2003 atau versi 2007 berdasarkan nama file boolean isexcel2003 = true; if (wdwutil.isexcel2007 (nama file)) {isExcel2003 = false; } // Instantiate stream input berdasarkan file yang baru dibuat adalah = FileInputStream baru (file1); // Baca informasi pelanggan berdasarkan konten di Excel CustomerList = getExcelInfo (IS, ISEXCEL2003); is.close (); } catch (Exception e) {E.PrintStackTrace (); } akhirnya {if (is! = null) {coba {isClose (); } catch (ioException e) {is = null; e.printstacktrace (); }} mengembalikan Daftar Pelanggan; } / *** Baca informasi pelanggan berdasarkan konten di Excel* @param adalah aliran input* @param isExcel2003 adalah Excel 2003 atau 2007 versi* @return* @throws IoException* / Daftar Publik <TapolicyModel> getExcelinfo (InputStream IS, boolean iSexcel2003) {NOLICLICY <TELOPY / LANCULIDED <TELOPY adalah {oolean {oolean iSexcel2003) {oolean {oolean {oolean {oolean {oolean {oolean {oolean {oolean {oolean {oolean iS. Coba { / ** Pilih cara membuat buku kerja sesuai dengan versi* / workbook wb = null; // Ketika Excel adalah 2003 IF (iSexcel2003) {wb = hssfworkbook baru (IS); } else {// ketika excel adalah 2007 wb = new xsfworkbook (IS); } // Baca informasi pelanggan di Excel CustomerList = ReadExcelValue (WB); } catch (ioException e) {e.printstacktrace (); } mengembalikan Daftar Pelanggan; } /** * Baca informasi pelanggan di excel * @param wb * @return * /daftar pribadi <tapapolicymodel> readExcelValue (workbook wb) {// Dapatkan lembar shell pertama = wb.getsheetat (0); // Dapatkan jumlah baris di excel this.totalrows = sheet.getphysicalNumberofrows (); // Dapatkan jumlah kolom di Excel (mungkin ada baris) if (totalRows> = 1 && sheet.getRow (0)! = Null) {this.totalcells = sheet.getRow (0) .getPhysicalNumberofcells (); } Daftar <OtapolicyModel> otapolicymodellist = new ArrayList <tapapolicymodel> (); Otapolicymodel otapolicymodel; // Nomor baris Excel Loop, mulai dari baris kedua. Judul tidak disimpan untuk (int r = 1; r <totalrows; r ++) {baris baris = sheet.getrow (r); if (row == null) lanjutkan; otapolicymodel = Otapolicymodel baru (); coba {thread.currentThread (). sleep (1); } catch (InterruptedException e) {E.PrintStackTrace (); } otapolicymodel.setpolicyid (System.currentTimemillis ()); // koleksi excel untuk (int c = 0; c <this.totalcells; c ++) {sel sel = row.getCell (c); if (null! = cell) {if (c == 0) {otapolicymodel.setsource (cell.getStringCellValue ()); // pemasok} lain if (c == 1) {otapolicymodel.setVendee (cell.getStringCellValue ();/lainnya = outpute (cell. if (cell.getStringCellValue () == "all") {triptype = 0; } lain if (cell.getStringCellValue (). Equals ("single-way")) {triptype = 10; } lain if (cell.getStringCellValue (). Equals ("Round Trip")) {triptype = 20; } lain if (cell.getStringCellValue (). Equals ("Single-Way Direct Flight")) {triptype = 11; } lain if (cell.getStringCellValue (). Equals ("Round Trip")) {triptype = 12; } lain if (cell.getStringCellValue (). Equals ("Round Trip")) {triptype = 21; } lain if (cell.getStringCellValue (). Equals ("Round Trip")) {triptype = 21; } lain if (cell.getStringCellValue (). Equals ("Round Trip")) {triptype = 22; } otapolicymodel.settripType (triptype); // tipe rencana perjalanan} lain jika (c == 3) {otapolicymodel.setcarrier (cell.getStringCellValue ()); // celling} sel lain if (c == 4) {otapolicymodel.setdepcity (c == 4) {otapolicymodel.setdepity (c == kota} lain jika (c == 5) {otapolicymodel.setArrcity (cell.getStringCellValue ()); // landing city} lain jika (c == 6) {otapolicymodel.setsalebegindatel (baru BigDecimal (cell.getNumericCellValue ()). SetScale (0, BigDecimal.round_half_down) .longValue ()); // tanggal mulai penjualan} lain jika (c == 7) {otapolicymodel.setsaleendDatel (baru BigDecimal (cell.getNumericCellValue ()). SetScale (0, BigDecimal.round_half_down) .longValue ()); // Tanggal akhir penjualan} lain jika (C == 8) {otapolicymodel.settravelbegindatel (baru (c == 8) {otapolicymodel.settravelbegindatel (baru (c == 8) {otapolicymodel.settravelbeGindatel (baru (c == 8) BigDecimal (cell.getNumericCellValue ()). SetScale (0, BigDecimal.round_half_down) .longValue ()); // Tanggal mulai perjalanan} lain jika (C == 9) {otapolicymodel.settravelendDatel (baru BigDecimal (cell.getNumericCellValue ()). SetScale (0, BigDecimal.round_half_down) .longValue ()); // Tanggal akhir perjalanan} lain jika (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); // level kadRift} lain jika (c == 11) {otapolicymodel.setfdType (cell.getStringCellValue (). Equals ("berdasarkan harga")? 1: 2); // rebate type} lain jika lain (c == otapolicymodel.setcabin (cell.getStringCellValue ()); // cat} lain jika (c == 13) {otapolicymodel.setpriceBegin (cell.getNumericCellValue ()); // harga minimum} lain jika (c == 14) {) otapolicymodel.setpriceend (cell.getNumericCellValue ()); // harga maksimum} else if (c == 15) {otapolicymodel.setlmoney (cell.getNumericCellValue ()); // hemat uang} lain if (c == 16) { otapolicymodel.setFpercent (cell.getNumericCellValue ()); // harga penuh rabat} lain jika (c == 17) {otapolicymodel.setftpercent (cell.getNumericCellValue ()); // rabat} lain jika (c == 18) {interlim ()); // if (cell.getStringCellValue (). Equals ("ya")) {carrierlimit = 1; } lain if (cell.getStringCellValue (). Equals ("no")) {carrierlimit = 0; } lain if (cell.getStringCellValue (). Equals ("none")) {carrierlimit = 2; } otapolicymodel.setCarrierlimit (CarrierLimit); // Pembatasan maskapai Invoice} lain jika (c == 19) {int transport = 2; if (cell.getStringCellValue (). Equals ("ya")) {transport = 1; } lain if (cell.getStringCellValue (). Equals ("no")) {transport = 0; } lain if (cell.getStringCellValue (). Equals ("no")) {transport = 0; } lain if (cell.getStringCellValue (). Equals ("no")) {transport = 0; } lain if (cell.getStringCellValue (). Equals ("no")) {transport = 0; } lain if (cell.getStringCellValue (). Equals ("no")) {transport = 0; } lain if (cell.getStringCellValue (). Equals ("no")) {transport = 0; } lain if (cell.getStringCellValue (). Equals ("Unlimited")) {transport = 2; } otapolicymodel.setTransport (transport); // mendukung transport intermodal} lain jika (c == 20) {int sharedflight = 2; if (cell.getStringCellValue (). Equals ("ya")) {sharedflight = 1; } lain if (cell.getStringCellValue (). Equals ("no")) {sharedflight = 0; } lain if (cell.getStringCellValue (). Equals ("none")) {sharedflight = 2; } otapolicymodel.setSharedFlight (sharedflight); // mendukung penerbangan bersama} lain jika (c == 21) {otapolicymodel.setpStatus (cell.getStringCellValue (). Equals ("valid")? 1: 2);//status} lain jika (c == 22). if (cell.getStringCellValue (). Equals ("private")) {faretype = 1; } lain if (cell.getStringCellValue (). Equals ("publikasi")) {faretype = 2; } lain if (cell.getStringCellValue (). Equals ("publikasi")) {faretype = 2; } else if (cell.getStringCellValue (). Equals ("all")) {faretype = 0; } otapolicymodel.setFaretype (faretype); // freight type} else if (c == 23) {otapolicymodel.setlimitprice (LIMBLECIMAL baru (limit lime (cell.getnumericcellValue (). setScale (0, BigDecimal.Round_HALF_DOWVALUE (). if (c == 24) {int limittransit = 2; if (cell.getStringCellValue (). Equals ("all")) {limittransit = 2; } else if (cell.getStringCellValue (). Equals ("berlaku")) {limitTransit = 0; } lain jika (cell.getStringCellValue (). Equals ("tidak berlaku")) {limitTransit = 1; } otapolicymodel.setlimittransit (limittransit); // Batas transisi} lain jika (c == 25) {otapolicymodel.setarrcity (cell.getStringCellValue ()); // transisi kota} lain jika (c == 26) {int limitnation = 2; if (cell.getStringCellValue (). Equals ("all")) {limitnation = 2; } lain if (cell.getStringCellValue (). Equals ("berlaku")) {limitnation = 0; } lain if (cell.getStringCellValue (). Equals ("tidak berlaku")) {limitnation = 1; } otapolicymodel.setlimitnation (limitnation); // batas kebangsaan} lain jika (c == 27) {otapolicymodel.setarrcity (cell.getStringcellValue ()); // nasional} lain jika (c == 28) {oapolicymodel.setusername (cell. } // Tambahkan pelanggan otapolicymodellist.add (otapolicymodel); } return otapolicymodellist; }}Kelas Alat wdwutil.java
Paket com.flight.inter.otaadapter.commons.util;/*** dibuat oleh ling.zhang pada 2016/12/29. */ kelas publik wdwutil {// @description: apakah itu excel tahun 2003, return true adalah 2003 public static boolean isexcel2003 (string filepath) {return filepath.matches ("^.+/. (? i) (xls) $"); } //@Deskripsi: Apakah itu Excel tahun 2007, return true adalah 2007public static boolean isexcel2007 (string filepath) {return filepath.matches ("^.+//. (? I) (xlsx) $");}}Catatan: Demi kenyamanan membaca, kode di atas pertama kali diposting dengan metode induk dan kemudian metode anak. Dalam pengeditan kode yang sebenarnya, metode anak umumnya diedit pertama kali dan kemudian diedit dengan metode induk. Sebagai contoh, yang di atas harus terlebih dahulu mengedit kode kelas alat, lalu mengedit kode layer layanan, dan akhirnya mengedit kode pengontrol.
Dengan cara ini, keseluruhan prosesnya ok. Ambil untuk mengujinya sekarang
Untuk konten yang lebih menarik, silakan klik "SPRING UPLEAD DAN Unduh Topik Khusus" untuk studi dan penelitian yang mendalam.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.