في التطبيقات العملية ، غالبًا ما تواجه مواقف حيث يتم تحميل Excel أو تنزيلها ، مثل استيراد البيانات ، وتنزيل إحصائيات ، وما إلى ذلك ، لمعالجة هذه المشكلة ، كتبت مثالًا على تحميل التحميل البسيط استنادًا إلى SPRINGMVC ، حيث يستخدم معالجة Excel مكون POI الخاص بـ APACHE.
التبعيات الرئيسية هي كما يلي:
<Rependency> <roupeD> commons-io </rougiD> <StifactId> commons-io </shintifactid> <الإصدار> 2.4 </version> </sependency> <reperency> <roupl> commons-filepload </rougiD> <StifactId> commons-filepload </textiD> <roupl> org.springframework </rougiD> <StifactId> Spring-Web </stifactid> <الإصدار> 4.0.0.Release </version> </repreadency> <sependency> <rougid> org.springframework </rougeid> </reperency> <reperency> <roupiD> org.apache.poi </rougiD> <StifactId> poi </shintifactid> <sophy> 3.10.1 </splex> </sependency>
فئات المعالجة ذات الصلة:
(ط) فئة وحدة التحكم
حزمة com.research.spring.controller ؛ استيراد java.io.ioException ؛ استيراد java.util.arraylist ؛ استيراد java.util.hashmap ؛ استيراد java.util.list ؛ استيراد java.util.map ؛ استيراد 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 ؛ استيراد com.research.spring.view.excelview ؛ controller @requestmapping ("/file") الفئة العامة fileController {/** * Excel File Upload Processing * @param file */return @requestmapping ("/expload") public ModelAndView Uploadexcel (erquestparam ("file" multipartfile file) {list <userinfo> // يتم معالجتها فقط مع الملفات التي تحتوي على أسماء ملفات بما في ذلك "المستخدم" ، ويستخدم القالب قالب التنزيل if (file.getoriginalfilename (). ورقة ورقة = wb.getsheetat (0) ؛ لـ (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 ("/download") ModelandView DownLoadexcel () {list <Seratinfo> list = new ArrayList <SeterInfo> () ؛ userInfo userInfo = new userInfo () ؛ userInfo.setPassword ("0000") ؛ userInfo.setUserName ("sdfas") ؛ list.add (userInfo) ؛ list.add (userInfo) ؛ list.add (userInfo) ؛ list.add (userInfo) ؛ خريطة <string ، list <userInfo >> map = new hashmap <string ، list <userInfo >> () ؛ map.put ("infolist" ، قائمة) ؛ excelview ve = new excelview () ؛ إرجاع New ModelAndView (VE ، MAP) ؛ }}(2) فئة الكيان
حزمة com.research.spring.model ؛ فئة عامة userInfo {private string username ؛ كلمة مرور السلسلة الخاصة ؛ السلسلة العامة getUserName () {return username ؛ } public void setusername (string username) {this.userName = username ؛ } السلسلة العامة getPassword () {return password ؛ } public void setPassword (سلسلة كلمة مرور) {this.password = password ؛ } Override Public String ToString () {return "userInfo [username =" + username + "، password =" + password + "]" ؛ }}(3) عرض فئة
يتم استخدام هذه الفئة عند التنزيل ، وعند تقديم الصفحات في الربيع ، يمكنك استخدام فئة عرض مخصصة لأداء معالجة متعلقة بـ 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 ؛ استيراد org.apache.poi.hssf.usermodel.hssfworkbook ؛ استيراد org.apache.poi.ss.usermodel.cell ؛ استيراد org.apache.poi.ss.usermodel.row ؛ استيراد org.apache.poi.ss.usermodel.sheet ؛ استيراد org.springframework.web.servlet.view.document.abstractexcelview ؛ استيراد com.research.spring.model.userinfo ؛ / ** * تنزيل Excel View * * Author wdmcygah * */ class public excelview يمتد ملخصات agresscelview {Override protected void buildexceldocument (map <string ، compion> model ، hssfwork workbook ، httpservlevlet request ، httpservledsponse) قائمة <SetherInfo> list = (list <SetherInfo>) model.get ("infolist") ؛ if (list! = null && list.size ()! = 0) {int len = list.size () ؛ ورقة ورقة = workbook.createSheet () ؛ // السطر الأول من صف وصف النص صف = sheet.createrw (0) ؛ خلية الخلية = row.createcell (0 ، cell.cell_type_string) ؛ cell.setCellValue ("اسم المستخدم") ؛ cell = row.createcell (1 ، cell.cell_type_string) ؛ cell.setCellValue ("كلمة المرور") ؛ . 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) .gappassword ()) ؛ }} response.setContentType ("application/vnd.ms-excel") ؛ استجابة. setcharacterencoding ("UTF-8") ؛ // يتم ترميز اسم الملف هنا للتأكد من عرض الأحرف الصينية بشكل طبيعي أثناء تنزيل اسم Filename = urlencoder.encode ("user.xls" ، "UTF-8") ؛ // تم تعيين خاصية Disposition للمحتوى لتنزيل Response.Setheader ("Disposition" ، "المرفق ؛ filename =" + filename) ؛ OutputStream OS = response.getOutputStream () ؛ Workbook.write (OS) ؛ os.flush () ؛ OS.Close () ؛ }}(4) ملفات التكوين الرئيسية
عند تحميل الملفات ، تحتاج إلى تكوين فئة multipartresolver في ملف التكوين. بعد التكوين ، ستقوم Spring تلقائيًا بتمرير الملف إلى كائن متعدد الأطوار ، ثم يمكن إجراء المعالجة المقابلة. على سبيل المثال ، انظر فئة وحدة التحكم.
<؟ xmlns: p = "http://www.springframework.org/schema/p" XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframeworg http://www.springframework.org/schema/mvc http://www.springframework.org/schema/util/spring-util-3.0.xsd "> <context: component-scan base-package =" com.research "/> <bean> <property name =" viewClass "value = org.springframework value = "/web-inf/"/> <property name = "falue" value = ". value = "5242880000000"> </property> <!-مسار مؤقت للتحميل ، سيتم حذفه تلقائيًا بعد التحميل-> <property name = "uploadtempdir" value = "upload/temp"> </propert
(5) صفحة الاختبار
<html> <head> <meta http-equiv = "content-type" content = "text/html ؛ charset = utf-8"/> </head> <body> excel "> </input> </pump> <h3> اختبر دالة excel التحميل </h3> <form action =" file/epload.htm "enctype =" multipart/form-data "method =" post "> <input type =" file "
إذا كنت ترغب في رؤية رمز المصدر الكامل ، فيمكنك التحقق من ذلك في مستودع GitHub الخاص بي. من بينها ، يقوم تحميل الملفات فقط بمعالجة الملفات التي تلبي قالب التنزيل. لمعالجة الملفات الأخرى ، تحتاج إلى تنفيذها بنفسك. تم تمرير اختبار الكود دون خطأ.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.