이 글에서는 주로 자바의 객체배열을 엑셀로 내보내는 기능에 대한 관련 지식을 소개합니다. 매우 좋은 참조 값을 가지고 있으니 아래 에디터로 살펴보겠습니다
1. 관련 jar 패키지를 가져옵니다. pom 종속성은 다음과 같습니다.
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>RELEASE</version> </dependency>
2, 코딩 시작
1. 내보내기 기능을 많이 사용하신다면 툴 클래스로 만들어서 아래 올려드린 코드로 변환하시면 됩니다.
//结果返回的是写入的记录数(以下用的是自己业务场景数据) public int downLoadToExcel(OutputStream outputStream,List<PaimaiMoneyVO> paimaiMoneyVOList) { //文档对象 HSSFWorkbook wb = new HSSFWorkbook(); int rowNum = 0; Sheet sheet = wb.createSheet("excel的标题"); Row row0 = sheet.createRow(rowNum++); //因为场景不同,titil不同,可以在外面写成数组当参数传进来 row0.createCell(0).setCellValue("第一列属性名"); row0.createCell(1).setCellValue("第二列属性名"); row0.createCell(2).setCellValue("第三列属性名"); row0.createCell(3).setCellValue("第四列属性名"); row0.createCell(4).setCellValue("第五列属性名"); row0.createCell(5).setCellValue("第六列属性名"); if (paimaiMoneyVOList != null && paimaiMoneyVOList.size() > 0) { for (PaimaiMoneyVO paimaiMoneyVO : paimaiMoneyVOList) { Row row = sheet.createRow(rowNum++); row.createCell(0).setCellValue(paimaiMoneyVO.getPaimaiId()); row.createCell(1).setCellValue(paimaiMoneyVO.getTitle()); row.createCell(2).setCellValue(paimaiMoneyVO.getUsername()); row.createCell(3).setCellValue(paimaiMoneyVO.getMoney()+"元"); row.createCell(4).setCellValue("升价拍"); row.createCell(5).setCellValue(bidder); } } try { wb.write(outputStream); LogEnum.LAW_WARE.info("表数据写入到excel表成功,一共写入了"+(rowNum - 1)+"条数据"); outputStream.close(); } catch (IOException e) { LogEnum.LAW_WARE.error("流关闭异常!", e); } finally { if (outputStream != null) { try { outputStream.close(); } catch (IOException e) { LogEnum.LAW_WARE.error("流关闭异常!", e); } } } return rowNum - 1; }
2. "Tool Class"를 작성한 후, 위의 함수 매개변수를 보면 알 수 있습니다. 두 개의 개체를 전달해야 합니다. 하나는 출력 스트림 OutPutStream이고 Excel은 스트림을 통해 브라우저로 전송됩니다.
다른 하나는 내보내야 하는 개체 배열입니다. , 아니요 설명이 너무 많습니다. 코드를 살펴보세요. (다음 메소드는 action 레이어에 작성되었으며 struts.xml 구성 접근을 통해 다운로드 가능)
public void exportBail(){ this.fileName = "excel文件名"; try { List<PaimaiMoneyVO> paimaiMoneyVOList = new ArrayList<>(); //下面是我的业务场景获取对象数组 if(paimaiMoneySearchParam!=null){ paimaiMoneySearchParam.setVendorId(WebHelper.getVenderId()); paimaiMoneySearchParam.setPageSize(Constants.AUCTION_WARE_PAGE_SIZE); paimaiMoneySearchParam.setPage(page); PaimaiMoneyDto paimaiMoneyDto = auctionWareService1.searchPopPaimaiMoneyList(paimaiMoneySearchParam); if(paimaiMoneyDto!=null){ int count = paimaiMoneyDto.getCount(); int totalPage = count/ Constants.AUCTION_WARE_PAGE_SIZE + (count% Constants.AUCTION_WARE_PAGE_SIZE > 0?1:0); for(int i=1;i<=totalPage;i++){ paimaiMoneySearchParam.setPage(i); PaimaiMoneyDto paimaiMoneyResultResult = auctionWareService1.searchPopPaimaiMoneyList(paimaiMoneySearchParam); if(paimaiMoneyResultResult!=null){ paimaiMoneyVOList.addAll(paimaiMoneyResultResult.getList()); } } } } OutputStream outputStream = response.getOutputStream(); response.reset();//清空输出流 //下面是对中文文件名的处理 response.setCharacterEncoding("UTF-8");//设置相应内容的编码格式 //解析浏览器 final String userAgent = request.getHeader("USER-AGENT").toLowerCase(); if(userAgent.contains("firefox")){ //火狐浏览器 fileName = new String(fileName.getBytes(), "ISO8859-1"); }else{ fileName = URLEncoder.encode(fileName, "UTF-8"); //其他浏览器 fileName = fileName.Replace("+", "%20"); //encode后替换,解决空格问题(其中%20是空格在UTF-8下的编码 ,如果不这么写,浏览器会用+代替空格) } response.setHeader("Content-Disposition", "attachment;filename=" +fileName + ".xls");//指定输出文件名 response.setContentType("application/msexcel");//定义输出类型 int rouNum = ensurePriceListToExcel(outputStream,paimaiMoneyVOList); LogEnum.LAW_WARE.info("【RiseAuctionAction.downLoadEnsurePriceExcel】导出成功,一共更新了{"+rouNum+"}条记录"); } catch (Exception e) { LogEnum.LAW_WARE.error("【RiseAuctionAction.downLoadEnsurePriceExcel】导出失败,error is {}", e); } }
3. 확장(세부 도구 개발)
위의 내용이 너무 간단하다고 생각되시면 아래에서 참고하실 수 있도록 "범용" 도구 카테고리로 분류해 놓았습니다.
아아아아아아아위 내용은 Excel을 통해 객체 배열 내보내기 기능을 구현하기 위한 Java용 샘플 코드 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!