En raison des exigences du projet, les données doivent être exportées dans une table Excel et l'élément d'exportation peut être sélectionné et téléchargé. Le cadre Spring + MyBatis + SpringMVC utilisé par le projet est utilisé pour exporter Excel à l'aide d'Apache POI. Veuillez utiliser POI sur Baidu. Sans plus tarder, veuillez ajouter le code.
Code exportexcelutil
package com.rixin.common.util; importer java.io.outputstream; importer java.lang.reflect.method; import java.net.urlencoder; import java.util.collection; import java.util.iterator; org.apache.poi.hssf.usermodel.hssfcell; import org.apache.poi.hssf.usermodel.hssfcellStyle; import org.apache.poi.hssf.usermodel.hssfrow; import org.apache.poi.hssf.Usermodel.hssfsfsfs; org.apache.poi.hssf.usermodel.hssfworkBook; import org.apache.poi.ss.usermodel.font; / ** * javaee export excel outils outils basé sur POI * * @Author [email protected] * @see POI * / Classe publique Exportexcelutil {/ ** * * @Param Réponse * @ParaMep Nom de fichier * Nom de fichier tel que: "Table étudiante" * @param ExcelHeader * Excel Table Table En-Tich, stockant le "Name # Name" Format String, "Name" est la ligne d'en-tête Excel, et "Name" est le nom de champ d'objet * @param datalist * Collection de données * / public static <T> HSSFWorkBook Export (HTTPServletResponse Response, String FileName, String [] ExcelHeader, Collection <T> Datalist) lève Exception {// SET LA DEMAND RESPONSE.SetContentType ("application / application / vnd.ms-excel"); Response.sethEader ("Content-Disposition", "Pixe; FileName =" + Urlencoder.Encode (FileName + ".xls", "UTF-8")); // Créer un classeur, correspondant à un fichier Excel hssfworkbook wb = new hssfworkbook (); // Définissez le style de titre hssfCellStyle titlestyle = wb.createCellStyle (); // Set Cell Border Style Titlestyle.SetBorderTop (hssfcellStyle.border_thin); // Top Border Line Line Titlestyle.SetborderBottom (hssfcellstyle.borter_thin); // Bottom Border Edge Line Titleyle.Setborderleft (hssfcellStyle. titlestyle.setborderright (hssfcellStyle.border_thin); // bordure de bordure de bordure droite // alignement de cellule set titlestyle.setalignment (hssfcellStyle.align_center); // Horizontal Center Titlestyle.SetVerticalAlignment (hssfcellStyle.vertical_center); // Vertical Center // Set Font Style Font titleFont = wb.createFont (); TitleFont.setFontheightInpoints ((court) 15); // Font Hight TitleFont.SetFontName ("Bold"); // Font Style Titlestyle.setfont (TitleFont); // Ajouter une feuille dans le classeur, correspondant à la feuille dans le fichier Excel hssfsheet sheet = wb.createSheet (nom de fichier); // Title Array String [] titLearray = new String [ExcelHeader.length]; // Nom de champ String String [] fieldArray = new String [ExcelHeader.length]; for (int i = 0; i <excelHeader.length; i ++) {String [] temparray = excelHeader [i] .split ("#"); // Temporary Array Split # titLearray [i] = temparray [0]; fieldArray [i] = temparray [1]; } // Ajouter une ligne de titre dans la feuille hssfrow row = sheet.createrow ((int) 0); // Le nombre de lignes commence à 0 hssfcell SequeneceCell = row.createCell (0); // La colonne de cellule commence à 0 et ajouter le numéro de séquence SequenceCelll.SetCellValue ("Numéro de série"); SequenceCell.SetCellStyle (Titlestyle); Sheet.AutosizEColumn (0); // définir automatiquement la largeur // Attribuez une valeur à la ligne de titre pour (int i = 0; i <titLearray.length; i ++) {hssfcell titlecell = row.createCell (i + 1); // le 0 bits est occupé par le numéro de série [i]) titlecell.setcellStyle (titlestyle); sheet.AutosizEColumn (i + 1); // Le bit 0 est occupé par le numéro de série, donc +1} // Le style de données doit être défini séparément en raison des différents styles de titre et de données, sinon il écrasera HSSFCellStyle datastyLe = wb.CreateCellStyle (); // Définir Data Border DatastyLe.SetBorderBottom (hssfCellStyle.Borter_Thin); dataSyle.setborderTop (hssfcellStyle.border_thin); dataSyle.setborderLeft (hssfCellStyle.border_thin); Datastyle.SetBorderRight (hssfcellStyle.border_thin); // Définissez le style central datastyle.setalignment (hssfcellStyle.align_center); // Horizontal Center DatastyLe.SetVerticalAlignment (hssfcellStyle.vertical_center); // Centre vertical // Définir la police de données DataFont = wb.createfont (); datafont.setFontheightInpoints ((court) 12); // Font Hight DataFont.SetFontName ("安"); // FONT DATASTYLE.SETFONT (DATAFONT); // Traversé les données de collecte et générer un itérateur de lignes de données <T> it = datalist.iterator (); int index = 0; while (it.hasnext ()) {index ++; // le bit 0 est occupé donc +1 row = sheet.createrow (index); // Attribuez une valeur au numéro de séquence hssfcell SequenceCellValue = Row.CreateCell (0); // La valeur de numéro de séquence est toujours la 0ème colonne SequenceCellValue.SetCellValue (index); SequenceCellValue.SetCellStyle (DataSyle); feuille.AutosizEColumn (0); T t = (t) it.next (); // Utilisation de la réflexion, appelez dynamiquement la méthode GetXxx () correspondante en fonction du tableau de nom de champ passé, obtenez la valeur d'attribut pour (int i = 0; i <fieldarray.length; i ++) {hssfcell datacell = row.createCell (i + 1); datacell.setCellStyle (datastyle); feuille.AutosizEColumn (i + 1); String fieldName = fieldArray [i]; String getMethodName = "Get" + fieldName.SubString (0, 1) .toupperCase () + fieldName.SubString (1); // Obtenez la classe de méthode GetXxx () correspondante <? étend objet> tcls = t.getClass (); // les génériques sont des objets et des sous-classes de toutes les méthodes d'objets getMethod = tcls.getMethod (getMethodName, nouvelle classe [] {}); // Obtenez la méthode correspondante valeur objet = getMethod.invoke (t, nouvel objet [] {}); // dynamic call datacell.setCellValue (value.toString ()); // attribue une valeur à la colonne actuelle}}} outputStream OutputStream = Response.getOutputStream (); // Open Stream WB.Write (OutputStream); // hsssfworkbook write stream wb.close (); // hssfworkbook CloseputSortStream. OutputStream.Close (); // Close Stream Retour WB; } // xssfcellStyle.align_center Centre Alignment // xssfcellStyle.align_left Alignment gauche // xssfcellStyle.alignvert Xssfcellstyle.vertical_bottom dans la droite // cellstyle.borter_double ligne double coefficient // cellstyle.borter_thin fine bord // cellstyle.borterder_medium moyen moyen // cellstyle.border_dashed stended edge // cellstyle.border_hair small dot dected bord // celstyle.
Code de contrôleur
@RequestMapping ("/ ExportProject.do") public void ExportProject (HttpServletResponse Response, String Export) {String [] ExcelHeader = Export.Split (","); List <rject> projectList = projectservice.getProjects (null); Try {ExportexceLutil.Export (réponse, "Table du projet", ExcelHeader, ProjectList); } catch (exception e) {e.printStackTrace (); }} Partie du code JSP
... <div style = "margin-top: 5px;"> <span> <input type = "checkbox" value = "project name # name" name = "export" checked = "checked"> </span> <input type = "text" value = "project name" Disabled = "Disabled"> </ div> ...
L'image ci-dessous
Ce qui précède concerne cet article, j'espère qu'il sera utile à l'apprentissage de tout le monde.