1. Excel 가져 오기 및 내보내기
1. 로컬 내보내기 템플릿을 통해 Excel로 내보내기 (더 복잡한 헤더 내보내기에 적합)
이것은 내가 로컬에 넣은 템플릿입니다
다음은 내가 내 보낸 방법입니다.
쿼리 된 데이터를 2 차원 배열에 넣고 2 차원 배열의 데이터를 읽어 내 보냅니다.
내보내기 후 데이터는
2. POI를 통해 엑셀을 통해 데이터 내보내기
코드로 직접 이동하면 사용자 엔티티 클래스를 직접 만들어야합니다.
@Override
public void downloadFile (HttpServletRequest request, HttpServletResponse response) { try { User users = new User (); users.setId ( "1222"); users.setUsername ( "张三"); users.setPhone ( "1760767162"); users.setAddress ( "深圳 塘 朗"); users.setCardno ( "4325241995086246"); users.setTitel ( "java 删 库 到 跑路"); users.setState ( ""); // 获取 数据 List <User> list = new ArrayList <User> (); list.add (사용자);
// excel title
String [] title = { "학생 이름", "휴대폰 번호", "ID 번호", "주소", "강좌 이름", "강좌 결제 상태", "id"};
// 엑셀 파일명
String fileName = "agent"+ users.getUsername () + "등록 정보 통계표"+ System.currentTimeMillis () + ".xls";
// CellRangeAddress callRangeAddress = new
// CellRangeAddress (0, 0, 0,6); // 시작 행, 끝 행, 시작 열, 끝 열
// sheet 名
String sheetName = "招生 信息 统计表 22";
String [] [] content = new String [list.size ()] [title.length];
문자열 상태 = "";
for (int i = 0; i <list.size (); i ++) { // content [i] = new String [title.length]; 사용자 사용자 = list.get (i); if (null! = user.getState ()) { state = "已 付费"; } else { state = "未 付费"; } / * * 날짜 날짜 = obj.getReportDate (); content [i] [0] = * sDateFormat.format (날짜);
* /
content [i] [0] = user.getUsername ();
content [i] [1] = user.getPhone () + "";
content [i] [2] = user.getCardno () + "";
content [i] [3] = user.getAddress () + "";
content [i] [4] = user.getTitel ();
content [i] [5] = 상태;
content [i] [6] = 사용자 .getId ();
}
// 병합 된 셀의 내용
String mergeCell = "Agent"+ users.getUsername () + "등록 된 총 학생 수 :"+ list.size () + "people";
Integer cellNum = 5 ;// 셀의 6 개 열 병합 // HSSFWorkbook
생성
// HSSFWorkbook wb1 = new HSSFWorkbook ();
HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook (sheetName, title, content, null, mergeCell, cellNum);
// 파일 errFile = new File (CoinConfig.RESOURCE_BASIC_PATH + "/"
// + fileName);
// 响应 到 客户 端
try { this.setResponseHeader (response, fileName); OutputStream os = response.getOutputStream (); // OutputStream os = new FileOutputStream (errFile); wb.write (os); os.flush (); os.close (); } catch (예외 e) { e.printStackTrace (); }
} catch (예외 e) { log.error ( "다운로드 실패", e); } }
도구 방법
public class ExcelUtil {
/ **
* Excel 내보내기
* @param sheetName 시트 이름
* @param title title
* @param 값 content
* @param wb HSSFWorkbook 객체
* @return
* /
public static HSSFWorkbook getHSSFWorkbook (String sheetName, String [] title, String [ ] [] 값, HSSFWorkbook wb, String mergeCell, Integer cellNum) {
// 첫 번째 단계는 Excel 파일에 해당하는 HSSFWorkbook을 만드는 것입니다.
if (wb == null) { wb = new HSSFWorkbook (); }
// 두 번째 단계는 Excel 파일의
HSSFSheet 시트 에 해당하는 시트를 통합 문서에 추가하는 것입니다. file = wb.createSheet (sheetName);
// 세 번째 단계는 헤더의 0 행을 시트에 추가하는 것입니다 이전 버전의 poi는 Excel의 행과 열 수에 제한이 있습니다
HSSFRow row = sheet.createRow (0);
// 네 번째 단계는 셀을 생성하고 값 헤더를 설정하는 것입니다. 헤더를 중앙으로 설정하십시오.
HSSFCellStyle style = wb.createCellStyle ();
style.setAlignment (HSSFCellStyle.ALIGN_CENTER); // 중앙 포맷을 생성하십시오
// 열 객체 선언
HSSFCell cell = null;
if (StringUtils.isNotEmpty (mergeCell)) { // 셀 병합 CellRangeAddress callRangeAddress = new CellRangeAddress (0,0,0, cellNum); // 시작 행, 끝 행, 시작 시작 열, 끝 열 sheet.addMergedRegion (callRangeAddress); cell = row.createCell (0); cell.setCellValue (mergeCell); cell.setCellStyle (style); row = sheet.createRow (1); // HSSFCell cell = null; // 제목 만들기 for (int i = 0; i <title.length; i ++) { cell = row.createCell (i); cell.setCellValue (title [i]);
cell.setCellStyle (스타일);
}
// 콘텐츠 생성
for (int i = 0; i <values.length; i ++) { row = sheet.createRow (i + 2); for (int j = 0; j <values [i] .length; j ++) { // 컨텐츠를 해당 컬럼 객체에 순서대로 할당 row.createCell (j) .setCellValue (values [i] [j]); } } } else { // HSSFCell cell = null; // Create title for (int i = 0; i <title.length; i ++) { cell = row.createCell (i); cell.setCellValue (title [i]); cell.setCellStyle (style); }
// Create content
for (int i = 0; i <values.length; i ++) { row = sheet.createRow (i + 1); for (int j = 0; j <values [i] .length; j ++) { // 컨텐츠를 해당 열 개체에 순서대로 할당합니다. row.createCell (j) .setCellValue (values [i] [j]); } } } return wb; } } 3. html 템플릿을 구성하여 내보낼 수 있습니다.