Пример: импортируйте соответствующие данные (файл Excel) и редактируйте соответствующие данные файла.
Конфигурация файла XML
Затем настройте размер файла, который будет загружен в файл Spring XML
<!-перехват файла загрузите, установите максимальный размер файла загрузки 10m = 10*1024*1024 (b) = 10485760 байт-> <bean id = "MultipResolver"> <Свойство = "maxUploadSize" value = "10485760" /> < /bean>
Конфигурация интерфейса JSP
<div> <form id = "sourcefile" name = "sourcefile" action = "" method = "post" ectype = "multipart /form-data"> <input type = "ald 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 Loading-Text = "Не отправляйте многократно" type = "отправить" value = "upload" onclick = "uppolicy ()"> <input style = "margin-left: 20px;" type = "Отправить" value = "Загрузить шаблон" onclick = "return downloadtemplate ();"> </form> </div>
JS -файл
function uppolicy () {document.sourcefile.action = "/login/police/uploadcsv"; var poormurl = document.getElementById ("SourceFile"). Атрибуты ["action"]. Value; $ .ajax ({type: «post», url: отправить, данные: $ ('#sourcefile'). serialize (), datatype: "json", успех: функция (результат) {var json = json.parse (result); if (json.flag == "0" })}Конфигурация контроллера
@RequestMapping (value = "/uploadCsv", method = requestMethod.post) @Responsebody public String uploadcsv (@RequestParam ("SourceFile") MultiplaRtFile SourceFile, httpservletrequest, httpservlectresponse response) thrroweexception {//определить, является ли файл пустым if (source inul) null null null null null null null); // Получение имени файла name name = sourcefile.getoriginalfilename (); // Далее определить, является ли файл пустым (то есть, определите, равен ли его размер 0 или его имя NULL) Long Size = SourceFile.getSize (); if (name == null || (""). Equals (name) && size == 0) return null; // пакетный импорт. Параметры: имя файла, файл. Boolean B = BatchImport (имя, SourceFile); JsonObject jsonObject = new jsonObject (); if (b) {jsonObject.put ("flag", 0); jsonobject.put («Успех», «Пакетный импорт успешно!»); } else {jsonObject.put ("flag", 1); jsonobject.put («Успех», «Пакетный импорт Excel не удался!»); } return jsonObject.toString (); }Слои не так подробно, и обработка выполняется в контроллере
public boolean batchimport (имя строки, Multipartfile file) {boolean b = false; // Создать и обрабатывать Excel Excelutils readexcel = new Excelutils (); // ПАНКА EXCEL и Получите коллекцию информации о клиентах. Список <TotapolicyModel> cpolicylist = readexcel.getExcelinfo (имя, файл); if (cpolicylist! = null) {b = true; } // Итеративно добавлять информацию (ПРИМЕЧАНИЕ. Фактически, вы можете напрямую использовать набор Cpolicylist в качестве параметра здесь и использовать тег Foreach, чтобы добавить в соответствующий файл отображения Mybatis для добавления партии.) Для (клиент Otapolicymodel: cpolicylist) {policyDao.InsertoToTopolicy (клиент); } return b; }Класс инструментов Excelutils.java
То есть методы, вызванные readexcel.getExcelinfo (имя, файл); утверждение в приведенном выше методе и других связанных методах
Apache Poi предоставляет API программы Java для чтения и написания архивов формата Microsoft Office. Однако, прежде всего, мы должны судить версию Excel и выбрать другую рабочую книгу (версия 2003 года соответствует HSSFWorkbook, а версия 2007 года и выше соответствует XSSFWorkBook). Кроме того, вообще говоря, сначала скопируйте файл, загруженный пользователем клиента на локальный диск сервера, а затем прочитайте его из этого файла копирования, что избегает потери данных или повреждения во время чтения из -за исключений сети или других условий клиента.
Пакет com.flight.inter.otaadapter.commons.util; import com.flight.inter.otaadapter.model.otapolicymodel; import org.apache.poi.hssf.usermodel.hssfworkbook; org.apache.poi.ss.usermodel.cell; импорт org.appo. org.apache.poi.ss.usermodel.sheet; import org.apache.poi.ss.usermodel.workbook; import org.apache.poi.xssf.usermodel.xssfworkbook; импорт org.springframework.web.multipart.multipartfile; импорт org.sprimework.web.multipart.multipartfile; org.springframework.web.multipart.commons.commonsmultipartfile; импорт java.io.*; import java.math.bigdecimal; импорт java.util.arraylist; импорт java.util.date; импорт java.util.list;/*** **** */public class excelutils {// Общее количество строк частное int totalrows = 0; // общее количество произведений частные int otalcells = 0; // Сообщение об ошибке приемник частная строка errorrrmsg; // метод строительства public excelutils () {} // Получить общее количество строк public int getTotalRows () {return TotalRows;} // Получить общее количество столбцов public int getTotalCells () {return TotalCells;} // Получить сообщение об ошибке public String getErrorInfo () {return errormsg;} // } / ** * Проверьте файл Excel * @param filepath * @return * / public boolean valideexcel (string filepath) {if (filepath == null ||! (Wdwutil.isexcel2003 (filepath) || вернуть ложь; } вернуть true; } /** * Прочтите файл Excel и получите сбор информации о клиентах * @param * @return * /public list <totapolicymodel> getExcelinfo (String FileName, Multipartfile mfile) {// Преобразование многопоточного файла, загруженного файлом Spring в CommonsMultipartFile TypeMultiPartfile CFF = CommonsmultipArtipArtipArtipArtipArtipArtipArtipArtipar // Получить локальный файл пути хранилища файла = новый файл ("d: // fileupload"); // Создание каталога (его путь определяется текущим объектом файла, включая любой необходимый родительский путь.) If (! File.exists ()) file.mkdirs (); // Создать новый файл файла файла 1 = новый файл ("d: // fileUpload" + new Date (). GetTime () + ".xlsx"); // Записать загруженный файл в недавно созданный файл try {cf.getFileItem (). Write (file1); } catch (Exception e) {e.printstackTrace (); } // Инициализировать сбор информации о клиентах <totapolicymodel> customerList = new ArrayList <OtapolicyModel> (); // инициализировать входной поток входного потока is = null; Попробуйте {// проверить, квалифицировано ли имя файла if (! validexcel (filename)) {return null; } // По умолчанию, является ли файл версия 2003 или версия 2007 на основе имени файла Boolean isExcel2003 = true; if (wdwutil.isexcel2007 (имя файла)) {isexcel2003 = false; } // создание потока ввода на основе вновь созданного файла is = new FileInputStream (file1); // Читать информацию о клиентах на основе контента в Excel CustomerList = getExcelinfo (is, isExcel2003); is.close (); } catch (Exception e) {e.printstackTrace (); } наконец {if (is! = null) {try {as.close (); } catch (ioException e) {is = null; e.printstacktrace (); }} return CustomerList; } / *** Читать информацию о клиенте на основе содержимого в Excel* @param - это поток ввода* @param isexcel2003 - Excel 2003 или версия 2007 года* @return* @throws ioexception* / public list <totapolicymodel> getExcelinfo (inputStream, boolean isexcel2003) {list <totapolicymodel> naullist = null; Попробуйте { / ** Выберите способ создания рабочей книги в соответствии с версией* / Workbook WB = NULL; // Когда Excel IS 2003 if (isExcel2003) {wb = new HSSFWorkBook (IS); } else {// Когда Excel - 2007 WB = новый XSSFWorkBook (IS); } // Прочитайте информацию клиента в Excel CustomerList = ReadExcelValue (WB); } catch (ioException e) {e.printstackTrace (); } return CustomerList; } /** * Прочитайте информацию клиента в Excel * @param WB * @return * /private list <totapolicymodel> readexcelvalue (Workbook WB) {// Получить первый лист листа оболочки = wb.getSheetat (0); // Получить количество строк в Excel this.totalrows = sheet.getPhysicalNumberOfrows (); // Получить количество столбцов в Excel (предположительно, есть строки) if (totalRows> = 1 && sheat.getRow (0)! = Null) {this.totalcells = sheet.getRow (0) .getPhysicalNumberOfCells (); } List <totapolicymodel> otapolicymodellist = new Arraylist <otapolicymodel> (); Отаполимодель Отаполимодель; // цикл Excel ряд строк, начиная со второй строки. Название не хранится для (int r = 1; r <totalRows; r ++) {row row = sheet.getrow (r); if (row == null) продолжить; otapolicymodel = new Otapolicymodel (); try {thread.currentthread (). Sleep (1); } catch (прерванное искусство e) {e.printstacktrace (); } otapolicymodel.setpolicyid (system.currenttimemillis ()); // Сбор Excel для (int c = 0; c <this.totalcells; c ++) {cell cell = row.getcell (c); if (null! = cell) {if (c == 0) {otapolicymodel.setsource (cell.getStringCellValue ()); // Поставщик} else if (c == 1) {otapolicyModel.setvendee (cell.getStringCellValue ());////выходной канал} иначе, если (c == 2) {inttype ());//} eR (c == 2) {inttype ());///} els (c == 2). if (cell.getStringCellValue () == "All") {tripType = 0; } else if (cell.getStringCellValue (). equals ("Single Tay")) {tripType = 10; } else if (cell.getStringCellValue (). equals ("round strock")) {tripType = 20; } else if (cell.getStringCellValue (). equals ("односторонний прямой полет")) {tripType = 11; } else if (cell.getStringCellValue (). equals ("round strock")) {tripType = 12; } else if (cell.getStringCellValue (). Equals ("Round Try")) {tripType = 21; } else if (cell.getStringCellValue (). Equals ("Round Try")) {tripType = 21; } else if (cell.getStringCellValue (). equals ("round strock")) {tripType = 22; } otapolicymodel.setTriptype (tripType); // марте -маршрут} else if (c == 3) {otapolicymodel.setCarrier (cell.getStringCellValue ()); // код авиакомпании} else if (c == 4) {otapolyModel.setDepCity (cell.getStingCecling; City} else if (c == 5) {otapolicymodel.setarrcity (cell.getStringCellValue ()); // Landing City} els BigDecimal (cell.getNumericCellValue ()). SetScale (0, BigDecimal.Round_half_down) .longValue ()); // Дата начала продаж} els BigDecimal (cell.getNumericCellValue ()). SetScale (0, BigDecimal.Round_Half_dow BigDecimal (cell.getNumericCellValue ()). SetScale (0, BigDecimal.Round_Half_dow BigDecimal (cell.getNumericCellValue ()). SetScale (0, BigDecimal.Round_Half_down) .longValue ()); // Дата окончания перемещения} else if (c == 10) {int cabyType = 9; if (cell.getStringCellValue (). Equals ("all")) {cabyType = 9; } else if (cell.getStringCellValue (). Equals ("Экономический класс")) {cabyType = 1; } else if (cell.getStringCellValue (). equals ("business")) {cabyType = 2; } else if (cell.getStringCellValue (). Equals ("First Class")) {cabyType = 3; } otapolicymodel.setcobintype (cabytype); // уровень кадрифта} else if (c == 11) {otapolicymodel.setfdtype (cell.getStringCellValue (). Equals ("ценовой диапазон")? 1: 2); // Тип ски otapolicymodel.setcabin (cell.getStringCellValue ()); // cat} else if (c == 13) {otapolicymodel.setpricebegin (cell.getNumericCellValu otapolicymodel.setpriceend (cell.getnumericcellvalue ()); // максимальная цена} else if (c == 15) {otapolicymodel.setlmoney (cell.getnumericcellvalu otapolicymodel.setfpercent (cell.getNumericCellValue ()); // Полная скидка} else if (c == 17) {otapolicymodel.setftpercent (cell.getNumericCellValue ()); // пожалуйста скидка} else if (c == 18) {int carrierLimit = 2; if (cell.getStringCellValue (). Equals ("yes")) {carrierLimit = 1; } else if (cell.getStringCellValue (). Equals ("no")) {carrierLimit = 0; } else if (cell.getStringCellValue (). Equals ("non")) {carrierLimit = 2; } otapolicymodel.setCarrierLimit (carrierLimit); // Ограничения авиакомпании счетов} else if (c == 19) {int transport = 2; if (cell.getStringCellValue (). Equals ("yes")) {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 (транспорт); // Поддержка интермодального транспорта} else if (c == 20) {int sharedflight = 2; if (cell.getStringCellValue (). Equals ("yes")) {sharedflight = 1; } else if (cell.getStringCellValue (). Equals ("no")) {sharedFlight = 0; } else if (cell.getStringCellValue (). Equals ("non")) {sharedFlight = 2; } otapolicymodel.setsharedflight (sharedflight); // Поддержка общих полетов} else if (c == 21) {otapolicymodel.setpstatus (cell.getStringCellValue (). equals ("valive")? 1: 2); // Статус} else (c == 22) (int faretyp = 0; 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); // Freight Type} else if (c == 23) {otapolicymodel.setlimitprice (new BigDecimal (cell.getNumericCellValue ()). SetScale (0, BigDecimal.round_half_down). if (c == 24) {int limittransit = 2; if (cell.getStringCellValue (). Equals ("all")) {LimitTransit = 2; } else if (cell.getStringCellValue (). Equals ("Applyble")) {LimitTransit = 0; } else if (cell.getStringCellValue (). Equals ("не применимо")) {LimitTransit = 1; } otapolicymodel.setLimitTransit (LimitTransit); // Предел перехода} else if (c == 25) {otapolicymodel.setArrcity (cell.getStringCellValue ()); // переход City} else If (c == 26) {int limitnation = 2; if (cell.getStringCellValue (). Equals ("all")) {LimitNation = 2; } else if (cell.getStringCellValue (). equals ("Applyble")) {LimitNation = 0; } else if (cell.getStringCellValue (). Equals ("не применимо")) {LimitNation = 1; } otapolicymodel.setLimitnation (LimitNation); // ограничение национальности} else if (c == 27) {otapolicymodel.setarrcity (cell.getStringCellValue ()); // national} else if (c == 28) {otapolicyModel.setUsEnam } // Добавить клиента otapolicymodellist.add (otapolicymodel); } вернуть otapolicymodellist; }}Класс инструментов wdwutil.java
пакет com.flight.inter.otaadapter.commons.util;/*** Создан Ling.zhang 12/12/29. */ public class wdwutil {// @description: Excel 2003 года, вернуть True Is Public Static Boolean Isexcel2003 (String filePath) {return filePath.matches ("^.+/. (? i) (xls) $"); } //@Описание: Будь то Excel 2007 года, вернуть True IS 2007Public Static Boolean isExcel2007 (String filePath) {return filePath.matches ("^.+//. (? I) (xlsx) $");}}Примечание. Для удобства чтения приведенный выше код сначала размещен с помощью родительского метода, а затем с детьми. В фактическом редактировании кода детский метод, как правило, сначала отредактируется, а затем отредактируется с помощью родительского метода. Например, приведенное выше должно сначала отредактировать код класса инструментов, затем отредактировать код уровня услуг и, наконец, отредактировать код контроллера.
Таким образом, весь процесс в порядке. Возьмите это, чтобы проверить это сейчас
Для получения более захватывающего контента, пожалуйста, нажмите «Загрузка весны и скачать специальную тему» для углубленного исследования и исследований.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.