간단한 Excel 파일을 생성합니다
실제 사무실에서는 종종 요구 사항이 있습니다. 우리는 보고서를 Excel에 직접 개설해야합니다. 인턴쉽 중에 그러한 필요가 있습니다. 선택한 리소스를 기반으로 사용자가 제공 한 첨부 파일의 모든 정보를 쿼리하고 다운로드를 위해 Excel을 생성하십시오. 그러나 쿼리시, 사용자가 제공 한 첨부 파일 (ID 카드)의 정보에 오류가 있는지 확인해야합니다. 오류가 발생하는 오류가 발생합니다. 오류 메시지 Excel.
Apache의 POI 프로젝트는 현재 Excel 객체를 처리하는 데 사용되는 비교적 성숙한 HSSF 인터페이스입니다. 실제로 POI는 Excel을 처리 할뿐만 아니라 Word, PowerPoint, Visio 및 Outlook도 처리 할 수 있습니다.
여기에서 먼저 POI를 사용하여 Excel을 생성하는 방법을 소개합니다.
우선, Excel을 생성하기 전에 Excel 파일의 구성을 이해해야합니다. POI에서는 다음과 같이 이해됩니다. Excel 파일은 통합 문서에 해당하고 WorkerBook은 여러 시트로 구성됩니다. 시트에는 여러 행이 있고 행에는 일반적으로 여러 개의 셀이 있습니다.
위의 네 명은 아래 그림에서 이해할 수 있습니다.
Excel을 생성하기 위해 POI는 다음과 같은 기본 객체를 제공합니다.
위의 그림과 Excel 조직 구조에서 Excel을 만드는 단계를 이해할 수 있습니다.
1. 문서 개체 hsshworkbook을 생성합니다.
2. HSSFWorkbook을 통해 양식 HSSFSHEET를 생성합니다.
3. hssfsheet를 통해 행을 생성합니다
4. hssfrow를 통해 셀 hssfcell을 생성합니다.
디스플레이 코드는 다음과 같습니다.
Identity Card Error Bean (ErrorCondition.java)
공개 클래스 ErrorCondition {개인 문자열 이름; // 이름 개인 문자열 idcard; // ID 카드 개인 문자열 상태; // 오류 상태 개인 문자열 메시지; // 오류 메시지 ERRORCONDITION (문자열 이름, 문자열 idcard, 문자열 상태, 문자열 메시지) {this.name = name; this.idcard = idcard; this.status = 상태; this.message = 메시지; } public String getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } public String getIdcard () {return idcard; } public void setIdcard (String idcard) {this.idcard = idcard; } public String getStatus () {return status; } public void setstatus (문자열 상태) {this.status = 상태; } public string getMessage () {return message; } public void setMessage (문자열 메시지) {this.message = 메시지; }}처리 클래스 (ExplorterRorexcel.java)
Public Class ExporterRorexcel {public static void main (String [] args) {// 1 단계 제작 hssfworkbook wb = new Hssfworkbook (); // 2 단계 시트 작성 HSSFSHEET SETER = WB.CreatESheet ( "ID 카드 오류 메시지"); // 3 단계 행을 만듭니다. 행 행을 만듭니다 : 테이블 헤더 0 행 추가 hssfrow row = sheet.createrow (0); hssfcellstyle style = wb.createcellstyle (); style.setalignment (hssfcellstyle.align_center); // 센터 // 4 단계 : 셀 작성 hssfcell cell = row.createcell (0); // 첫 번째 셀 셀 .setCellValue ( "name"); // 값 세트 셀 .setCellStyle (스타일); // 센터 내용 셀 = row.createCell (1); // 두 번째 셀 셀 .setCellValue ( "ID 카드"); Cell.setCellStyle (스타일); cell = row.createcell (2); // 세 번째 셀 셀 .setCellValue ( "오류 상태"); Cell.setCellStyle (스타일); cell = row.createcell (3); // 네 번째 셀 셀 .setCellValue ( "오류 메시지"); Cell.setCellStyle (스타일); // 다섯 번째 단계는 데이터 목록 <ERORCONDITION> LIST = EXTERROREXCEL.GETERRORCONDITION (); for (int i = 0; i <list.size (); i ++) {ErrorCondition ErrorCondition = list.get (i); // row = sheet.createrow (i+1) 만들기; // 셀을 만들고 데이터를 추가합니다. row.createCell (1) .SetCellValue (ErrorCondition.getIdcard ()); row.createCell (2) .SetCellValue (ErrorCondition.getStatus ()); row.createCell (3) .SetCellValue (ErrorCondition.getMessage ()); } // 6 단계 생성 된 Excel 파일을 지정된 경로로 저장하려면 {fileoutputStream fout = 새 FileOutputStream ( "d : //errorcondition.xls"); wb.write (fout); fout.close (); } catch (ioexception e) {e.printstacktrace (); } system.out.println ( "Excel 파일 생성이 성공적으로 ..."); } public static list <ERORCONDITION> GETERRORCONDITION () {LIST <ERRERCONDITION> LIST = NEW ARRAYLIST <ERRERCONDITION> (); ErrorCondition R1 = New ErrorCondition ( "Zhang San", "4306821989021611", "L", "Length Error"); ErrorCondition R2 = New ErrorCondition ( "Li Si", "430682198902191112", "X", "Check Error"); ErrorCondition R3 = New ErrorCondition ( "Wang Wu", "", "N", "Identity Card Information은 비어 있습니다"); list.add (r1); list.add (r2); list.add (r3); 반환 목록; }} 위의 6 단계를 통해 지정된 위치에서 Excel 파일을 생성 할 수 있습니다.
Java POI 구현은 그림을 Excel에 삽입합니다
웹 개발을 수행하는 것은 Excel을 다루는 데 불가피합니다. 오늘 상사는 나에게 과제를 주었다 - Export Excel. 처음에 내가 생각한 것은 매우 간단했고, 단지 검색, Excel 구축 및 응답 다운로드였습니다. 그러나 한 가지 차이점이 있습니다. 즉, 사진을 추가해야합니다. 오랫동안 추가 된 사진입니다. 동시에 인터넷에서 좋은 정보가 발견되지 않았 으므로이 블로그 게시물을 작성하여 내 자신과 블로그 친구를 위해 쿼리 및 참조를 기록했습니다.
POI에는 HSSFPatriarch 객체가 있으며, 이는 그리기의 최고 관리자입니다. CreatePicture (Anchor, PictureIndex) 메소드는 그림을 Excel에 삽입 할 수 있습니다. 따라서 Excel에 사진을 삽입해야하며 세 단계로 사진을 수행 할 수 있습니다. 1. HSSFPatriarch Object, 2. 새로운 HSSFClientAnchor 객체, 3. CreatePicture 메소드를 호출하십시오. 구현은 구현하기가 매우 쉽지만 여전히 잘 수행하기가 어렵습니다. 여기서는 먼저 그림을 삽입합니다.
공개 클래스 ExcelImagetest {public static void main (String [] args) {fileoutputStream fileout = null; bufferedimage bufferimg = null; // 먼저 BYTEARRAY TRY를 생성하기 위해 그림의 읽기를 ByTeARRAYOUTPUTSTREAM에 넣습니다. bufferimg = imageio.read (새 파일 ( "f : /picture/anounty/xiaozhao11.jpg"); imageio.write (bufferimg, "jpg", bytearrayout); hssfworkbook wb = 새로운 hssfworkbook (); hssfsheet sheet1 = wb.createsheet ( "테스트 사진"); // 드로잉의 상단 관리자는 하나의 시트 만 얻을 수 있습니다 (이 지점에주의를 기울이십시오) hssfpatriach patriarch = sheet1.createdRawingPatriach (); // 앵커는 주로 그림의 속성을 설정하는 데 사용됩니다. Anchor.setanchortype (3); // patriarch.createpicture (앵커, wb.addpicture (bytearrayout.tobytearray (), hssfworkbook.picture_type_jpeg); fileout = 새 FileOutputStream ( "d :/test 엑셀 .xls"); // Excel 파일에 쓰기 wb.write (파일 아웃); System.out.println ( "--------"); } catch (예외 e) {e.printstacktrace (); } morne {if (fileout! = null) {try {fileout.close (); } catch (ioexception e) {e.printstacktrace (); }}}}}}}}}}} 다음은 실행 후 결과입니다.
이 결과는 주로 HSSFClientAnchor (0, 0, 255, 255, (Short) 1, 1, (Short) 5, 8) 생성자 때문인 이유에 관해서. 아래 의이 생성자를 다음과 같이 설명하겠습니다. HSSFClientAnchor (int dx1, int dy1, int dx2, int dy2, short col1, int row1, short col2, int row2); 각 매개 변수의 의미는 다음과 같습니다.
여기서 DX1 및 DY1은 시작 셀에서 이미지의 시작 위치를 정의하고 DX2 및 DY2는 종료 셀의 종료 위치를 정의합니다. Col1 및 Row1은 시작 셀, Col2 및 Row2가 말단 셀을 정의합니다.
다음은 두 개의 다른 생성자로 만들어집니다. 이 그림에서, 우리는 위의 8 가지 매개 변수의 의미와 차이점을 명확하게 볼 수 있습니다.
위의 것은 하나의 사진을 삽입하는 것입니다. 여러 사진을 삽입하는 것은 어떻습니까? 사실, 그것은 매우 간단합니다. 여러 다른 hssfclientanchor 객체를 구성하고 다음과 같이 8 개의 매개 변수를 제어하십시오.
hssfclientanchor anchor1 = 새로운 hssfclientanchor (0, 0, 1023,100, (짧은) 1, 1, (짧은) 5, 8); hssfclientanchor 앵커 2 = 새로운 hssfclientanchor (0, 0, 1023,100, (짧은) 1, 9, (짧은) 5, 16); // patriarch.createpicture (앵커 1, wb.addpicture (bytearrayout.tobytearray (), hssfworkbook.picture_type_jpeg) 삽입); Patriarch.CreatePicture (Anchor2, Wb.addpicture (bytearrayout.tobytearray (), hssfworkbook.picture_type_jpeg));
코드의 나머지 부분은 동일하며 다음과 같은 결과를 얻습니다.