프로젝트 요구 사항으로 인해 데이터를 Excel 테이블로 내보내야하며 내보내기 항목을 선택하고 다운로드 할 수 있습니다. 프로젝트에서 사용하는 Spring+Mybatis+SpringMVC 프레임 워크는 Apache POI를 사용하여 Excel을 내보내는 데 사용됩니다. 바이두에서 poi를 사용하십시오. 더 이상 고민하지 않고 코드를 추가하십시오.
ExportExcelutil 코드
package 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.httpervletrpongrence; import; 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 org.apache.poi.hssf.usermodel.hssfworkbook; import org.apache.poi.ss.usermodel.font;/** * javaee Export Excel 도구 클래스 * @Author [email protected] * @see poi */public class exportexcelutil {@param * @param * @param * @param * @Param "학생 테이블" * @Param ExcelHeader * Excel 테이블 헤더 배열, "이름#이름"형식 "형식"형식 ","이름 "은 Excel 헤더 행이며"이름 "은 객체 필드 이름 * @Param Datalist * 데이터 수집, 테이블 헤드 어레이의 필드 이름과 일치해야합니다. 예외 */public static <t> hssfworkbook export (httpservletresponse 응답, 문자열 filename, string [] ExcelHeader, Collection <T> Datalist)은 예외를 겪고 {// 요청 응답 설정 .setContentType ( "Application/Application/Vnd.ms-Excel"); response.setHeader ( "content-disposition", "첨부 파일; filename =" + urlencoder.encode (filename + ".xls", "utf-8")); // Excel 파일에 해당하는 통합 문서 작성 hssfworkbook wb = new hssfworkbook (); // 제목 스타일 설정 hssfcellstyle titlestyle = wb.createcellstyle (); // 셀 테두리 스타일 titlestyle.setbordertop (hssfcellstyle.border_thin); // 상단 테두리 얇은 줄 라인 titlestyle.setborderbottom (hssfcellstyle.border_thin); // 하단 테두리 얇은 에지 선 titlestyle.setborderleft (hssfcellstyle.border_thin); titlestyle.setborderright (hssfcellstyle.border_thin); // 오른쪽 테두리 얇은 가장자리 줄 // 세트 셀 정렬 titlestyle.setalignment (hssfcellstyle.align_center); // 수평 센터 titlestyle.setverticalalignment (hssfcellstyle.vertical_center); // 세로 센터 // 글꼴 스타일을 설정하십시오. font titlefont = wb.createFont (); TitleFont.SetFonTheightInPoints ((짧은) 15); // font height titlefont.setfontname ( "bold"); // 글꼴 스타일 titlestyle.setfont (TitleFont); // Excel 파일의 시트에 해당하는 통합 문서에 시트를 추가합니다. // 제목 배열 문자열 [] titlearray = new String [ExcelHeader.length]; // 필드 이름 배열 문자열 [] fieldArray = 새 문자열 [ExcelHeader.length]; for (int i = 0; i <excelheader.length; i ++) {string [] temparray = ExcelHeader [i] .split ( "#"); // 임시 배열 분할# titlearray [i] = temparray [0]; FieldArray [i] = temparray [1]; } // 시트에 제목 행 추가 hssfrow row = createrow ((int) 0); // 행의 수는 0 hssfcell sequencecell = row.createcell (0)에서 시작하여 셀 열이 0에서 시작되고 시퀀스 번호 SequenceCell.SetCellValue ( "Serial Naters")를 추가합니다. SequenceCell.SetCellStyle (titlestyle); SETER.AUTOSIZECOLUMN (0); // 자동으로 너비를 설정하십시오. (int i = 0; i <titlearray.length; i ++) {hssfcell titlecell = row.createcell (i +1); // 0 비트는 +1 titlecell.setcellvalue (titlecell.setcellvalue); titlecell.setcellstyle (titlestyle); SETER.AUTOSIZECOLUMN (i + 1); // 0 비트는 일련 번호로 점유되므로 +1} // 다른 제목 및 데이터 스타일로 인해 데이터 스타일을 별도로 설정해야합니다. 그렇지 않으면 HSSFCellStyle DataStyle = WB.CreateCellStyle (); // SET DATA BORTHER DATASTYLE.SETBORDERBOTTOM (hssfcellstyle.border_thin); DataStyle.setborderTop (hssfcellstyle.border_thin); DataStyle.setborderleft (hssfcellstyle.border_thin); DataStyle.setBorderright (hssfcellstyle.border_thin); // 센터 스타일 DataStyle.setAlignment (hssfcellstyle.align_center)를 설정합니다. // 수평 센터 DataStyle.setVerticalAlignment (hssfcellstyle.vertical_center); // 세로 센터 // 데이터 설정 글꼴 글꼴 datafont = wb.createFont (); datafont.setfontheightinpoints ((짧은) 12); // font height datafont.setfontname ( "安"); // font datastyle.setfont (datafont); // 수집 데이터를 통과하고 데이터 행 반복자를 생성합니다. iterator <t> it = datalist.iterator (); int index = 0; while (it.hasnext ()) {index ++; // 0 비트가 점유되어 +1 row = sheet.createrow (index); // 시퀀스 번호에 값을 할당 hssfcell sequencecellvalue = row.createcell (0); // 시퀀스 번호 값은 항상 0 열 SequenceCellValue.setCellValue (index)입니다. SequenceCellValue.SetCellStyle (DataStyle); 시트 .Autosizecolumn (0); t t = (t) it.next (); // 반사를 사용하여 전달 된 필드 이름 배열을 기반으로 해당 GetXXX () 메소드를 동적으로 호출하고 (int i = 0; i <fieldArray.length; i ++) {hssfcell datacell = row.createcell (i+1); DataCell.SetCellStyle (DataStyle); 시트 .Autosizecolumn (i + 1); String FieldName = FieldArray [i]; 문자열 getMethodName = "get" + fieldName.SubString (0, 1) .toupperCase () + FieldName.SubString (1); // 해당 GetXXX () 메소드 클래스 <? 객체> tcls = t.getClass (); 제네릭은 모든 객체의 객체 및 서브 클래스입니다. getMethod = tcls.getMethod (getMethodName, new class [] {}); // 해당 메소드 객체 값을 가져옵니다. DataCell.setCellValue (value.toString ()); // 값을 현재 열에 할당}}}}}} outputStream outputStream = response.getoutputStream (); // Open Stream WB.Write (outputStream); // hssfworkbook wb.close (); // hssfworkbook Closeputsmor (Closeputsmor) outputStream.close (); // 닫기 스트림 리턴 wb; } // XSSFCELLSTYLE.ALIGN_CENTER CENTRENTER CENTER ALIGNMENT // XSSFCELLSTYLE.ALIGN_LEFT LEFT ALIGNMENT // XSSFCELLSTYLE.ALIGN_RIGHT OURMEL ALIGNMENT // XSSFCELLSTYLE.VERTICAL_TOP ALIGNMENT // XSSFCELLSTICEN.BONTTICAL_CENTER // right // cellstyle.border_double 양면 줄 // cellstyle.border_thin 얇은 가장자리 // cellstyle.border_medium medium edge // cellstyle.border_dashed 점선 엣지 // cellstyle.border_hair 작은 도트 엣지 엣지 // cellstyle.border_thick tich ge
컨트롤러 코드
@RequestMapping ( "/ExportProject.do") public void ExportProject (httpservletResponse 응답, 문자열 내보내기) {String [] ExcelHeader = Export.Split ( ","); list <project> projectList = projectService.getProjects (null); try {Exportexcelutil.export (응답, "프로젝트 테이블", Excelheader, ProjectList); } catch (예외 e) {e.printstacktrace (); }} JSP 코드의 일부
... <div style = "margin-top : 5px;"> <span> <입력 유형 = "checkbox"value = "project name#name"name "name ="export "checked ="checked "> </span"value = "project name"disabild "> </div> ...
아래 그림
위의 내용은이 기사에 관한 모든 것입니다. 모든 사람의 학습에 도움이되기를 바랍니다.