Debido a los requisitos del proyecto, los datos deben exportarse a una tabla de Excel, y el elemento de exportación se puede seleccionar y descargar. El marco Spring+MyBatis+SpringMVC utilizado por el proyecto se utiliza para exportar Excel usando Apache POI. Utilice POI en Baidu. Sin más preámbulos, agregue el código.
Código ExportExcelutil
paquete com.rixin.common.util; import java.io.outputstream; import java.lang.reflect.method; import java.net.urlencoder; import java.util.collection; import java.util.iterator; import javax.servlet.http.httpservletResponse; import org.apache.poi.hssf.usermodel.hssfcell; import org.apache.poi.hssf.usermodel.hssfcellStyle; import org.apache.poi.hssf.usermodel.hsssfrow; import org.apache.poi.hssf.usermodel.hssfworkbook; import org.apache.poi.ss.usermodel.font;/** * Javaee Export Export Excel Tool Clase basada en Poi * * @author [email protected] * @see poi */public class exportexcelutil {/** * * @param respuesta * Nombre del archivo como: "Tabla de estudiante" * @param Excelheader * Excel Tabla de encabezado de encabezado, almacenando la cadena de formato "Nombre de nombre", "Nombre" es la fila del encabezado de Excel, y "Nombre" es el nombre de campo de objeto * @param dataList * Recopilación de datos, debe ser consistente con el nombre de campo en la excepción del encabezado de la tabla, y competir con la especificación de Javabean * @@return return y el retorno y el rethurn anhtrewwork * static <t> hssfworkbook export (httpServletResponse Respuesta, String FileName, String [] ExcelHeader, Collection <T> DataList) arroja una excepción {// establece la respuesta de solicitud.setContentType ("Aplicación/Application/Vnd.ms-Excel"); Respuesta.Setheader ("Disposición de contenido", "Adjunto; FileName =" + Urlencoder.Encode (FileName + ".xls", "UTF-8")); // Crear un libro de trabajo, correspondiente a un archivo de Excel hssfworkbook wb = new hssfworkbook (); // Establecer el estilo de título HSSFCellStyle TITLESTYLE = WB.CreateCellStyle (); // establecer el estilo de borde del borde de la celda .SetBorderTop (hssfcellStyle.border_thin); // Titlestyle de borde delgado de borde superior TitleStyle.setBorderBottom (hssfcellstyle.border_thin); // Línea de borde del borde inferior Titlestyle. TITLESTYLE.SETBORDERRING (HSSFCELLSTYLE.BORDER_THIN); // Línea de borde delgado de borde derecho // Establecer alineación de celdas TitleStyle.Setalignment (hssfcellstyle.align_center); // Centro horizontal TITLESTYLE.SetVerticalAlignment (hssfcellstyle.vertical_center); // Centro vertical // Establecer Font Style Font TitleFont = WB.CreateFont (); titleFont.setFontheLightInpoints ((corto) 15); // Font Altura TitleFont.SetFontName ("Bold"); // Font Style TitleStyle.SetFont (TitleFont); // Agregue una hoja en el libro de trabajo, correspondiente a la hoja en el archivo de Excel HSSFSheet Hoja = WB.CreateSheet (nombre de archivo); // cadena de matriz de título [] titLearray = new String [ExcelHeader.Length]; // Nombre de campo Cadena de matriz [] fieldArray = new String [ExcelHeader.Length]; for (int i = 0; i <ExcelHeader.length; i ++) {String [] TempArray = ExcelHeader [i] .split ("#"); // Split de matriz temporal# TITLEARY [i] = TempArray [0]; fieldArray [i] = tempArray [1]; } // Agregar fila de título en la hoja hssfrow row = sheet.createrow ((int) 0); // El número de filas comienza en 0 hssfcell secuenceCell = row.createCell (0); // La columna de celda comienza en 0 y agregue el número de secuencia secuenceCell.setCellValue ("número serial"); secuenceCell.SetCellStyle (TitleStyle); shead.aUtosizeColumn (0); // Establecer automáticamente el ancho // asignar valor a la fila de título para (int i = 0; i <titlearRay.length; i ++) {hssfcell titleCell = row.createCell (i +1); // El 0 bit está ocupado por el número serial, SO +1 titleCell.setCellValue (titlearreray [IT]; TitLecell.SetCellStyle (TitleStyle); sheet.aUtosizeColumn (i + 1); // El bit 0 está ocupado por el número de serie, por lo que +1} // El estilo de datos debe establecerse por separado debido a los diferentes estilos de títulos y datos, de lo contrario sobrescribirá hssfcellstyle dataStyle = wb.createCellyle (); // Establecer Data Border DataStyle.SetBorderBottom (hssfcellstyle.border_thin); dataStyle.setBorderTop (hssfcellstyle.border_thin); dataStyle.setBorderLeft (hssfcellstyle.border_thin); dataStyle.setBorderRight (hssfcellstyle.border_thin); // Establecer el estilo central dataStyle.setAlignment (hssfcellstyle.align_center); // Horizontal Center DataStyle.SetVerticalAlignment (hssfcellstyle.vertical_center); // Centro vertical // Establecer font de datos Font dataFont = wb.createFont (); dataFont.setFontheLightInpoints ((corto) 12); // FUNT HIED DATAFONT.SETFONTNAME ("安"); // font dataStyle.setFont (dataFont); // atravesar los datos de recopilación y generar iterador de fila de datos <t> it = dataList.iterator (); int index = 0; while (it.hasNext ()) {index ++; // El bit 0 está ocupado SO +1 row = shead.createrow (index); // asigna un valor al número de secuencia hssfcell secuenceCellValue = row.createCell (0); // El valor del número de secuencia es siempre la columna 0, secuenceCellValue.setCellValue (index); secuenceCellValue.SetCellStyle (DataStyle); hoja.autosizeColumn (0); T t = (t) it.next (); // Usando la reflexión, llame dinámicamente el método getxxxx () correspondiente basado en la matriz de nombre de campo pasada, obtenga el valor de atributo para (int i = 0; i <fieldArray.length; i ++) {hssfcell dataCell = row.createCell (i+1); dataCell.SetCellStyle (DataStyle); hoja.autosizeColumn (i + 1); Cadena fieldName = fieldArray [i]; String getMethodName = "get" + fieldName.substring (0, 1) .ToUpperCase () + fieldName.substring (1); // Obtener la clase de método getxxxx () correspondiente <? extiende objeto> tcls = t.getClass (); // Los genéricos son objeto y subclases de todos los objetos método getMethod = tcls.getMethod (getMethodName, new class [] {}); // Obtenga el valor de objeto del método correspondiente = GetMethod.inVoke (T, nuevo objeto [] {}); // dataCell.SetCellValue (value.ToString ()); // Asignar un valor a la columna actual}}} outputStream outputStream = Response.getOutputStream (); // Abrir stream wb.write (outputStream); // hssfworkbook stream wb.close (); // hssfworkbook cerrador de salida de salida. outputStream.Close (); // Cerrar flujo return wb; } // xssfcellstyle.align_center Center alineación // xssfcellstyle.align_left Left alineación // xssfcellstyle.align_right Alineación correcta // xssfcellstyle.vertical_top Alignment // xssfcellStyle.verical_center en el medio // xssfcellsfcellsfcellyvergal Derecha // CellStyle.Border_Double Línea de doble cara // celular
Código de controlador
@RequestMapping ("/ExportProject.do") public void ExportProject (httpServletResponse respuesta, string export) {string [] Excelheader = export.split (","); List <jection> ProjectList = Projectservice.getProjects (nulo); Pruebe {ExportExcelUtil.Export (respuesta, "Tabla de proyecto", ExcelHeader, ProjectList); } catch (Exception e) {E.PrintStackTrace (); }} Parte del código JSP
... <div style = "margin-top: 5px;"> <span> <input type = "checkbox" value = "proyecto name#name" name = "export" checked = "checked"> </span> <input type = "text" value = "proyecto name" discapacitado = "desactivado"> </div> ... ... ...
La imagen de abajo
Lo anterior se trata de este artículo, espero que sea útil para el aprendizaje de todos.