Devido aos requisitos do projeto, os dados precisam ser exportados para uma tabela do Excel e o item de exportação pode ser selecionado e baixado. A estrutura Spring+Mybatis+Springmvc usada pelo projeto é usada para exportar o Excel usando o Apache Poi. Por favor, use PoI no Baidu. Sem mais delongas, adicione o código.
Código ExportExcelutil
pacote com.rixin.common.util; importar java.io.OutputStream; import java.lang.reflect.method; importar java.net.urlencoder; import java.util.collection; import java.util.iterator; import javax.servlet.http.htp.htp.ttps; org.apache.poi.hssf.usermodel.hssfcell; importar org.apache.poi.hssf.usermodel.hssfcellstyle; import org.apache.poi.hsf.usermodel.hsfrow; org.apache.poi.hssf.usermodel.hssfworkbook; importar org.apache.poi.ss.usermodel.font;/** * Javaee Export Excel Ferramenta Classe * @SoTaMeMexcelilill @author [email protected] * @see poi */public ClassExcelililill @author wjmiso Nome do arquivo como: "Tabela de estudante" * @param ExcelHeader * Excel Table Headring Matriz, armazenando o "nome#name" format string, "name" é a linha do cabeçalho do Excel, e "Nome" é o nome do campo do objeto * @param datalist * coleta de dados * deve ser consistente com o nome do campo no cabeçalho da tabela, e se retirará com a JavAting *. estático <t> hssfworkbook export (resposta httpServletResponse, nome do arquivo de string, string [] ExcelHeader, coleta <t> Datalist) lança a exceção {// defina o request Response.setContentType ("Application/Application/VND.MS-Excel"); Response.setheader ("Content-Disposition", "Applement; filename =" + urlencoder.encode (nome do arquivo + ".xls", "utf-8")); // Crie uma pasta de trabalho, correspondente a um arquivo do Excel HSSFWorkbook WB = new HSSFWorkbook (); // Defina o estilo de título hssfcellstyle titlestyle = wb.createCellstyle (); // Definir estilo de borda celular titlestyle.setBorDertop (hssfcellstyle.border_thin); // linha fina de borda fina titlestyle.setborderbottom (hssfcellstyle.border_thin); border de borda inferior titlestyle.setborderleft (hssfell); linhagem de borda inferior. titlestyle.setBorderright (hssfcellstyle.border_thin); // linha de borda direita linha de borda fina // Definir alinhamento de células titlestyle.setalignment (hssfcellstyle.align_center); // Centro Horizontal TitleStyle.SetverticalAlignment (HSSFCellStyle.vertical_center); // Centro vertical // Defina o estilo da fonte TitleFont = WB.CreateFont (); titlefont.setFoTheightInPoints ((curta) 15); // font altura titlefont.setFontName ("Bold"); // font style titlestyle.setFont (titleFont); // Adicione uma folha na pasta de trabalho, correspondente à folha na folha do Excel File HssfSheet = wb.createSheet (nome do arquivo); // Título Array String [] titLeaRray = new String [ExcelHeader.Length]; // Nome do campo Array String [] fieldArray = new String [ExcelHeader.Length]; para (int i = 0; i <excelHeader.Length; i ++) {string [] temparray = excelHeader [i] .split ("#"); // Split de matriz temporária# titlearray [i] = temparray [0]; fieldArray [i] = temparray [1]; } // Adicione a linha do título na folha hssfrow linha = chaphe.crerowroow ((int) 0); // O número de linhas começa em 0 hssfcell sequencecll = row.createCell (0); // a coluna da célula começa em 0 e adicione o número de sequência sequencell.setCellValue ("Número Serial"); sequencecl.SetCellStyle (Titlestyle); Sheet.AutosizEColumn (0); // Defina automaticamente a largura // Atribua valor à linha do título para (int i = 0; i <titLearray.length; i ++) {hssfcell titleCell = row.createcell (i +1); // o bit 0 é ocupado por número de strate, então +1 titLecll.Set. titleCell.setCellStyle (Titlestyle); Sheet.Autosizecolumn (i + 1); // O bit 0 é ocupado pelo número de série, então +1} // O estilo de dados precisa ser definido separadamente devido aos diferentes estilos de título e dados, caso contrário, substituirá o HSSFCellStyle Datastyle = WB.CreatElStyle (); // Definir dados de fronteira Datastyle.setBorderBottom (hssfcellstyle.border_thin); datastyle.setBorDertop (hsSfCellStyle.Border_thin); datastyle.setborderleft (hssfcellstyle.border_thin); datastyle.setBorderright (hssfcellstyle.border_thin); // Defina o Datastyle.setalignment do estilo central (HSSFCellStyle.align_center); // horizontal center datastyle.setverticalLignment (hssfcellstyle.vertical_center); // Centro vertical // Defina a fonte de dados DataFont = WB.CreateFont (); datafont.setFoTheightInPoints ((curta) 12); // fontes altura datafont.setFontName ("安"); // font datastyle.setFont (dataFont); // atravessa os dados da coleta e gerar o iterador de linha de dados <t> it = datalist.iterator (); int index = 0; while (it.hasNext ()) {index ++; // o bit 0 é ocupado então +1 linha = chaphe.crerow (index); // atribui um valor ao número da sequência HSSFCell SequencEllValue = Row.CreateCell (0); // O valor do número de sequência é sempre o 0º coluna sequenceCellValue.setCellValue (index); sequenceCellValue.setCellStyle (Datastyle); Sheet.Autosizecolumn (0); T t = (t) it.next (); // Usando a reflexão, chame dinamicamente o método getxxxx () correspondente com base na matriz de nome de campo passada, obtenha o valor do atributo para (int i = 0; i <fieldArray.length; i ++) {hssfcell datacell = row.createCell (i+1); datacell.setCellStyle (Datastyle); Sheet.Autosizecolumn (i + 1); String fieldname = fieldArray [i]; String getMethodName = "get" + fieldname.substring (0, 1) .touppercase () + fieldname.substring (1); // obtenha a classe Getxxx () correspondente <? estende objeto> tcls = t.getclass (); // genéricos são objetos e subclasses de todos os objetos método getMethod = tcls.getMethod (getMethodName, nova classe [] {}); // obtenha o valor do método correspondente = getMethod.invoke (t, o novo objeto [] (};}; datacell.setCellValue (value.ToString ()); // Atribua um valor à coluna atual}}} outputStream outputStream = Response.getOutputStream (); // fluxo de fluxo wb.write (outputStream); // hssfworkbook stream.close (); // hsSfWorks); outputStream.Close (); // Retorno de fluxo fechado WB; } // xssfcellstyle.align_center alinhamento do centro // xssfcellstyle.align_left alinhamento esquerdo // xssfcellstyle.align_right alinhamento direito // xssfcellstyle.vertical_top thener // xssfelllemle.vertical.vertical_toping // xssfelllemle.vertyle.vertical_top cenário Xssfcellstyle.vertical_bottom na direita // CellStyle.border_double linha dupla de lado // celsstyle.border_thin aresta fina // biba de célula.border_medium beira // celtstyle.border_dash borda pontilhada // celtyle.border_hair pequeno
Código do controlador
@RequestMapping ("/exportProject.do") public void exportProject (resposta httpSletResponse, string export) {string [] ExcelHeader = export.split (","); List <Project> ProjectList = Projectservice.getProjects (NULL); tente {exportexcelutil.export (resposta, "tabela de projetos", excelHeader, ProjectList); } catch (Exceção e) {e.printStackTrace (); }} Parte do código JSP
... <div style = "margin-top: 5px;"> <pan> <input type = "caixa de seleção" value = "nome do projeto#name" name = "export" checked = "checked"> </span> <input type = "text" value = "nome do projeto" desabilitado = "desativado"> </div> ...
A imagem abaixo
O exposto acima é tudo sobre este artigo, espero que seja útil para o aprendizado de todos.