Java 작업 Excel 파일

5941 단어
마침 회사 프로젝트 에서 자바 로 엑셀 을 조작 해 야 하 는데 시간 이 좀 걸 렸 으 니 필기 로 하 세 요!
1. Excel 파일 에 데 이 터 를 기록 합 니 다.
Excel 파일 에 쓸 데 이 터 를 List < String > lst 로 저장 합 니 다.
엑셀 에서 데 이 터 를 읽 습 니 다.
Excel 파일 에서 데 이 터 를 직접 읽 고 문자열 로 데 이 터 를 되 돌려 줍 니 다.
/**
	 *     Excel  
	 * 
	 * @param fileName     Excel   
	 * @throws WriteException 
	 * @throws RowsExceededException 
	 */
	public static void writeExcel(String fileName , List<String> lst){
		WritableWorkbook wwb = null;
		try {
			//      Workbook                 (Workbook)  
			wwb = Workbook.createWorkbook(new File(fileName));
		} catch (IOException e) {
			e.printStackTrace();
		}
		if (wwb != null) {
			//            
			// Workbook createSheet       ,          ,               
			WritableSheet ws = wwb.createSheet("          ", 0);
			Label label1 = new Label(0,0,"    ");
			Label label2 = new Label(1,0,"    (G)");
			Label label3 = new Label(2,0,"    ");
			
			//         
			try {
				ws.addCell(label1);
				ws.addCell(label2);
				ws.addCell(label3);
			} catch (RowsExceededException e1) {
				e1.printStackTrace();
			} catch (WriteException e1) {
				e1.printStackTrace();
			}
			
			//          
			for (int i = 0; i < lst.size(); i++) {
				String s[] = lst.get(i).split(",");
				for (int j = 0; j < s.length; j++) {
					//         , Excel ,        ,      
					Label labelC = new Label(j, i+1, s[j]);
					try {
						//               
						ws.addCell(labelC);
					} catch (RowsExceededException e) {
						e.printStackTrace();
					} catch (WriteException e) {
						e.printStackTrace();
					}
				}
			}
			try {
				//          
				wwb.write();
				//     ,    
				wwb.close();
			} catch (IOException e) {
				e.printStackTrace();
			} catch (WriteException e) {
				e.printStackTrace();
			}
		}
	}

3. 특정한 엑셀 파일 에서 특정한 키 워드 를 포함 하 는 지 찾 습 니 다.
4. 567913. 아래 두 가지 조작 은 프로젝트 에 사용 되 지 않 았 다.여기 도 잠시 남 겨 두 세 요.
넷,
그림 아이콘 을 Excel 에 삽입 하기
그림 삽입 이 쉽 습 니 다. 다음 코드 를 참조 하 십시오.
/**  Excel       
	 * @param file          
	 * @return  
	 */  
	public static String readExcel(String inPath){   
	    StringBuffer sb = new StringBuffer();   
	    File file = new File(inPath);
	    Workbook wb = null;   
	    try {   
	        //  Workbook(   )     
	        wb=Workbook.getWorkbook(file);   
	    } catch (BiffException e) {   
	        e.printStackTrace();   
	    } catch (IOException e) {   
	        e.printStackTrace();   
	    }   
	       
	    if(wb==null)   
	        return null;   
	       
	    //   Workbook    ,        Sheet(   )      
	    Sheet[] sheet = wb.getSheets();   
	       
	    if(sheet!=null&&sheet.length>0){   
	        //             
	        for(int i=0;i < sheet.length; ++i){
	            //             
	            int rowNum = sheet[i].getRows();   
	            for(int j=0;j < rowNum; ++j){
	                //           
	                Cell[] cells = sheet[i].getRow(j);   
	                if(cells!=null&&cells.length>0){
	                    //          
	                    for(int k=0;k < cells.length; ++k){
	                        //            
	                        String cellValue = cells[k].getContents();   
	                        sb.append(cellValue+"\t");   
	                    }   
	                }   
	                sb.append("\r
"); } sb.append("\r
"); } } // , wb.close(); return sb.toString(); }

상기 코드 의 주석 은 이미 명확 합 니 다. 아마도 더 이상 설명 할 필요 가 없 을 것 입 니 다. 우 리 는 다음 과 같은 프로그램 으로 검증 할 수 있 습 니 다.
/**
	 *                  
	 * @param file       
	 * @param keyWord        
	 * @return
	 */
	public static boolean searchKeyWord(File file, String keyWord) {
		boolean res = false;

		Workbook wb = null;
		try {
			//   Workbook(   )  
			wb = Workbook.getWorkbook(file);
		} catch (BiffException e) {
			return res;
		} catch (IOException e) {
			return res;
		}

		if (wb == null)
			return res;

		//    Workbook    ,        Sheet(   )   
		Sheet[] sheet = wb.getSheets();

		boolean breakSheet = false;

		if (sheet != null && sheet.length > 0) {
			//           
			for (int i = 0; i < sheet.length; ++i) {
				if (breakSheet)
					break;

				//           
				int rowNum = sheet[i].getRows();

				boolean breakRow = false;

				for (int j = 0; j < rowNum; ++j) {
					if (breakRow)
						break;
					//            
					Cell[] cells = sheet[i].getRow(j);
					if (cells != null && cells.length > 0) {
						boolean breakCell = false;
						//           
						for (int k = 0; k < cells.length; ++k) {
							if (breakCell)
								break;
							//          
							String cellValue = cells[k].getContents();
							if (cellValue == null)
								continue;
							if (cellValue.contains(keyWord)) {
								res = true;
								breakCell = true;
								breakRow = true;
								breakSheet = true;
							}
						}
					}
				}
			}
		}
		//       ,    
		wb.close();
		return res;
	}

 그러나 jxl 은 png 형식의 그림 만 지원 하고 jpg 형식 과 gif 형식 은 지원 되 지 않 습 니 다.
5. 머 릿 말 꼬 릿 말 을 삽입 하 는 일반적인 머 릿 말 꼬 릿 말 은 모두 세 부분 으로 나 뉘 는데 왼쪽, 가운데, 오른쪽 세 부분 은 다음 과 같은 코드 를 이용 하여 머 릿 말 꼬 릿 말 을 삽입 할 수 있 습 니 다.
	/**
	 *  Excel     
	 * 
	 * @param dataSheet
	 *                   
	 * @param col
	 *                   
	 * @param row
	 *                   
	 * @param width
	 *                   
	 * @param height
	 *                   
	 * @param imgFile
	 *                    
	 */
	public static void insertImg(WritableSheet dataSheet, int col, int row,
			int width, int height, File imgFile) {
		WritableImage img = new WritableImage(col, row, width, height, imgFile);
		dataSheet.addImage(img);
	}

좋은 웹페이지 즐겨찾기