В практических приложениях вы часто сталкиваетесь с ситуациями, когда Excel загружается или загружается, такие как импорт данных, загрузка статистики и т. Д. Для решения этой проблемы я написал простой пример загрузки на основе SpringMVC, где обработка Excel использует компонент POI Apache.
Основные зависимости следующие:
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId> org.springframework </GroupId> <ArtifactId> Spring-web </artifactid> <serse> 4.0.0.Release </version> </deploydent> <dehyederies> <groupid> org.springframework </GroupId> <artifactid> spring-webmvc </artifactid> <sers> 4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. <dependency> <groupid> org.apache.poi </GroupId> <artifactid> poi </artifactid> <sersive> 3.10.1 </version> </gethyseriation>
Связанные категории обработки:
(I) класс контроллера
пакет com.research.spring.controller; импортировать java.io.ioexception; импортировать java.util.arraylist; импортировать java.util.hashmap; импортировать java.util.list; импортировать java.util.map; Import org.apache.poi.hssf.usermodel.hssfworkbook; Импорт org.apache.poi.ss.usermodel.row; Импорт org.apache.poi.ss.usermodel.sheet; Импорт org.apache.poi.ss.usermodel.workbook; Импорт org.springframework.steretype.controller; Импорт org.springframework.web.bind.annotation.requestmapping; Импорт org.springframework.web.bind.annotation.requestparam; Импорт org.springframework.web.multipart.multipartfile; Импорт org.springframework.web.servlet.modelandView; импорт com.research.spring.model.userinfo; Import com.research.spring.view.excelview; @Controller @RequestMapping ("/file") открытый класс FileController {/** * Excel загрузки файла * @param file * @return */@requestmapping ("/upload") public modelandview uploadexcel (@requestparam ("file") multiplaartfile file) {liled <asminfo> riled riled rile -ray rile -stire -leptrel -leptrame ("file") {liled <somerinfo> riled> riled -leptrame ("file") // Это обрабатывается только с файлами с именами файлов, включая «Пользователь», и шаблон использует шаблон загрузки if (file.getoriginalfilename (). Содержит ("user")) {try {workbook wb = new hssfworkbook (file.getInputStream ()); Лист листа = wb.getsheetat (0); for (int i = 1; i <= sheet.getLastrownum (); i ++) {row 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 ("Content"); mav.addobject ("content", list.tostring ()); вернуть мав; }/*** Excel File Download Processing*/@Requestmapping ("/скачать") public modelandView downloadexcel () {list <userInfo> list = new ArrayList <userInfo> (); UserInfo userInfo = new userInfo (); userinfo.setpassword ("0000"); userinfo.setusername ("sdfas"); list.add (userInfo); list.add (userInfo); list.add (userInfo); list.add (userInfo); Map <string, list <userInfo >> map = new HashMap <String, list <userInfo >> (); map.put ("Infolist", List); Excelview ve = new Excelview (); вернуть New ModelAndView (ve, map); }}(Ii) Класс сущности
пакет com.research.spring.model; открытый класс userinfo {private String username; Private String Password; public String getUsername () {return username; } public void setUsername (string username) {this.username = username; } public String getPassword () {return пароль; } public void setPassword (String password) {this.password = password; } @Override public String toString () {return "userInfo [userName =" + username + ", password =" + password + "]"; }}(Iii) Просмотр класса
Этот класс используется при загрузке, и при рендеринге страниц весной вы используете пользовательский класс представления для выполнения обработки, связанной с Excel.
пакет com.research.spring.view; импортировать java.io.outputstream; импортировать java.net.urlencoder; импортировать java.util.list; импортировать java.util.map; Импорт javax.servlet.http.httpservletrequest; Импорт javax.servlet.http.httpservletresponse; Import org.apache.poi.hssf.usermodel.hssfworkbook; Импорт org.apache.poi.ss.usermodel.cell; Импорт org.apache.poi.ss.usermodel.row; Импорт org.apache.poi.ss.usermodel.sheet; Import org.springframework.web.servlet.view.document.abstractexcelview; импорт com.research.spring.model.userinfo; /** * Download Excel view* * @author wdmcygah * */ public class ExcelView extends AbstractExcelView { @Override protected void buildExcelDocument(Map<String, Object> model, HSSFWorkbook workbook, HttpServletRequest request, HttpServletResponse response) throws Exception { @SuppressWarnings("unchecked") Список <userInfo> list = (list <userInfo>) model.get ("Infolist"); if (list! = null && list.size ()! = 0) {int len = list.size (); Лист -лист = рабочая книга. CreateSheet (); // первая строка текста Описание ROW row = sheate.createrow (0); Cell Cell = row.createCell (0, cell.cell_type_string); cell.SetCellValue («Имя пользователя»); cell = row.createCell (1, cell.cell_type_string); cell.SetCellValue («Пароль»); // Ниже приведено конкретное содержание для (int i = 0; i <len; i ++) {row = sheet.createrow (i+1); cell = row.createcell (0, cell.cell_type_string); cell.setCellValue (list.get (i) .getUsername ()); cell = row.createCell (1, cell.cell_type_string); cell.setCellValue (list.get (i) .getPassword ()); }} response.setContentType ("Application/vnd.ms-excel"); response.setcharacterencoding ("UTF-8"); // Имя файла кодируется здесь, чтобы гарантировать, что китайские символы обычно отображаются во время загрузки строки файла = urlencoder.encode ("user.xls", "utf-8"); // свойство контента-дискозита установлено для загрузки response.setheader ("Content-Disposition", "ATTHAMENT; FILENAME =" + FILENAME); OutputStream OS = response.getOutputStream (); Workbook.write (OS); os.flush (); os.close (); }}(Iv) Основные файлы конфигурации
При загрузке файлов вам необходимо настроить класс Multipartresolver в файле конфигурации. После конфигурации пружина автоматически передает файл в объект MultipartFile, а затем может быть выполнена соответствующая обработка. Например, см. Класс контроллера.
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/mvc" xmlns: util = "http://www.springframe.orlns: util =" http://www.springframe.orschema. xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.spramework.org/schema/context http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd "> <Контекст: компонент-сканирование base-package =" com.research "/> <beance> <property =" viewclass "value =" org.spramework.web.servlet.vew.jstl. value = "/web-inf/"/> <name = "suffix" value = ". jsp"/> </bean> <!-Нагрузка на загрузку файла анализаторов-> <bean id = "multipresolver"> <name = "defaultenceding" value = "utf-8"> </property> <! value = "5242880000000"> </property> <!-временный путь к загрузке файл, он будет автоматически удален после загрузки-> <name = "uploadtempdir" value = "upload/temp"> </property> </bean> </beans>
(V) Тестовая страница
<html> <Head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"/> </head> <body> <h3> Проверьте функцию загрузки excel </h3> <form action = "file.htm" enctype = multipart/form-data "medod Excel"></input> </form> <h3>Test the upload Excel function</h3> <form action="file/upload.htm" enctype="multipart/form-data" method="post"> <input type="file" name="file"></input> <input type="submit" value="upload Excel"></input> </form> </body> </html>
Если вы хотите увидеть полный исходный код, вы можете проверить его в моем репозитории GitHub. Среди них загрузка файлов обрабатывает только файлы, которые соответствуют шаблону загрузки. Чтобы обработать другие файлы, вам нужно реализовать его самостоятельно. Тест кода прошел без ошибки.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.