نظرًا لمتطلبات المشروع ، يجب تصدير البيانات إلى جدول Excel ، ويمكن تحديد عنصر التصدير وتنزيله. يتم استخدام إطار عمل Spring+MyBatis+SpringMVC المستخدم في المشروع لتصدير Excel باستخدام Apache POI. الرجاء استخدام POI على Baidu. دون مزيد من اللغط ، يرجى إضافة الرمز.
رمز التصوير
package com.rixin.common.Util ؛ استيراد java.io.outputstream ؛ استيراد java.lang.reflect.method ؛ import java.net.urlencoder ؛ import java.util.collection ؛ import java.util.iterator ؛ isport javax.servlet.http.httponspons ؛ org.apache.poi.hssf.usermodel.hssfcell ؛ import org.apache.poi.hssf.usermodel.hssfcellstyle ؛ import org.apache.poi.hssf.usermodel.hssfrow ؛ import org.poi.hssf.ussf.ussf.ussmodel. org.apache.poi.hssf.usermodel.hssfworkbook ؛ import org.apache.poi.ss.usermodel.font ؛/** * javaee orport excel class class request * * @paramut * * @paramut * * paramut * paramut * paramut * paramut * paramut * paramut اسم الملف * اسم الملف مثل: "جدول الطالب" * param excelheader * excel table header صفيف ، وتخزين "name#name format string ،" name "هو صف رأس Excel ، و" اسم "هو اسم حقل الكائن * @Param DataList * RRETIN */static static <T> HSSFWorkbook Export (HttPservletResponse Response ، اسم ملف السلسلة ، سلسلة [] Excelheader ، المجموعة <T> Datalist) يلقي الاستثناء {// تعيين request Response.setContentType ("Application/Application/VND.MS-Excel") ؛ استجابة. // إنشاء مصنف ، يتوافق مع ملف Excel HSSFWorkbook WB = جديد HSSFWorkBook () ؛ // قم بتعيين نمط العنوان HSSFCellStyle TitLestyle = WB.CreateCellStyle () ؛ // قم بتعيين نمط الحدود الخلوي titlestyle.setbordertop (HSSFCellStyle.border_thin) ؛ // TOP Border Thin Thin Thined Line TitLestyle.SetBorderBottom (HssfcellStyle.border_thin) ؛ // Bottom Border Thin Line Line titlortyle.setborderleft (hssfcellstyle.border_thin) ؛ TitLestyle.setBorderRight (HSSFCellStyle.Border_thin) ؛ // LISE BORDER LIND EDGE LINE // set cell titlestyle.setalignment (hssfcellstyle.align_center) ؛ // المركز الأفقي titlestyle.setverticalIngmenment (hssfcellstyle.vertical_center) ؛ // vertical center // set font style font titlefont = wb.createfont () ؛ titlefont.setfontheightinpoints ((قصيرة) 15) ؛ // font height titlefont.setfontname ("Bold") ؛ // font style titlestyle.setfont (titlefont) ؛ // أضف ورقة في المصنف ، المقابلة للصفائح الموجودة في ملف Excel HSSFSHEET = wb.createsheet (اسم الملف) ؛ // title array string [] titlearray = new string [excelheader.length] ؛ // field name marray string [] fieldarray = new String [excelheader.length] ؛ لـ (int i = 0 ؛ i <excelheader.length ؛ i ++) {string [] temparray = excelheader [i] .Split ("#") ؛ // split split split# titlearray [i] = temparray [0] ؛ fieldarray [i] = temparray [1] ؛ } // إضافة صف العنوان في الصفوف HSSFrow Row = sheet.createrw ((int) 0) ؛ // يبدأ عدد الصفوف عند 0 hssfcell sequenceCell = row.createcell (0) ؛ sequencecell.setCellStyle (titlestyle) ؛ sheet.autosizeColumn (0) ؛ // ضبط العرض تلقائيًا // تعيين قيمة لصف العنوان (int i = 0 ؛ i <titlearray.length ؛ i ++) {hssfcell titlecell = row.createcell (i +1) ؛ Titlecell.setCellStyle (TitLestyle) ؛ sheet.autosizeColumn (i + 1) ؛ // يتم احتلال الرقم التسلسلي 0 ، لذلك يجب ضبط نمط البيانات بشكل منفصل بسبب أنماط العنوان والبيانات المختلفة ، وإلا فإنه سيقوم بالكتابة فوق HSSFCellStyle datastale = wb.createcellstyle () ؛ // تعيين البيانات الحدود datastyle.setBorderBottom (hssfcellstyle.border_thin) ؛ datasyle.setBorderTop (HSSFCellStyle.border_thin) ؛ datacyle.setborderleft (HSSfCellStyle.border_thin) ؛ datastyle.setBorderRight (hssfcellstyle.border_thin) ؛ // قم بتعيين النمط المركزي datacyle.setalignment (hssfcellstyle.align_center) ؛ // مركز الأفقي datastyle.setverticalIngenment (hssfcellstyle.vertical_center) ؛ // المركز العمودي // تعيين بيانات font datafont = wb.createfont () ؛ datafont.setfontheightinpoints ((قصيرة) 12) ؛ // font height datafont.setfontname ("安") ؛ // font datastyle.setfont (dataFont) ؛ // اجتياز بيانات التجميع وإنشاء ITerator صف البيانات <T> it = datalist.iterator () ؛ int index = 0 ؛ بينما (it.hasnext ()) {index ++ ؛ // يتم احتلال البت 0 so +1 row = sheet.createrw (index) ؛ // تعيين قيمة إلى رقم التسلسل HSSFCell SequencEcellValue = row.createCell (0) ؛ // قيمة رقم التسلسل هي دائمًا SequenceCellValue.setCellValue (الفهرس) ؛ sequenceCellValue.setCellStyle (datacyle) ؛ sheet.autosizeColumn (0) ؛ t t = (t) it.next () ؛ // باستخدام الانعكاس ، استدعاء بشكل ديناميكي طريقة getxxx () المقابلة بناءً على صفيف اسم الحقل الذي تم تمريره ، الحصول على قيمة السمة لـ (int i = 0 ؛ i <fieldarray.length ؛ i ++) {hssfcell datacell = row.createcell (i+1) ؛ datacell.setCellStyle (datacyle) ؛ sheet.autosizeColumn (i + 1) ؛ سلسلة fieldName = fieldarray [i] ؛ String getMethodName = "get" + fieldname.substring (0 ، 1) .ToupperCase () + fieldname.substring (1) ؛ // احصل على فئة طريقة getxxx () المقابلة <؟ يمتد كائن> tcls = t.getClass () ؛ // generics هي كائن وفئات فرعية لجميع الكائنات طريقة getMethod = tcls.getMethod (getMethodName ، فئة جديدة [] {}) ؛ // الحصول على قيمة الكائن المقابلة = getMethod.invoke (t ، كائن جديد [] {}) datacell.setCellValue (value.toString ()) ؛ // تعيين قيمة للعمود الحالي}}} outputstream outputstream = response.getoutputstream () ؛ outputStream.Close () ؛ // إغلاق دفق الإرجاع wb ؛ ) xssfcellstyle.vertical_bottom في اليمين // cellstyle.border_double سطر مزدوج // cellstyle.border_thin thinرمز وحدة التحكم
requestmapping ("/exportProject.do") public void esportproject (httpservletresponse response ، string esport) {string [] excelheader = export.split ("،") ؛ قائمة <Project> ProjectList = Projectervice.getProjects (NULL) ؛ حاول {orportexcelutil.export (استجابة ، "جدول المشروع" ، ExcelHeader ، ProjectList) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ }} جزء من رمز JSP
... <div style = "margin-top: 5px ؛"> <span> <input type = "checkbox" value = "project name#name" name = "esport" checked = "checked"> </span> <input type = "text" value = "project name" up upded = "up up up"> </div> ...
الصورة أدناه
ما سبق هو كل شيء عن هذا المقال ، آمل أن يكون مفيدًا لتعلم الجميع.