검색엔진 을 직접 작성 합 니 다 (자주 검색 하 세 요 과정 7 \ # 문 서 를 해석 하 는 WORD \ #) (자바, Lucene, hadop)

6524 단어 자바hadoopLucene
1. POI 대 Word 처리
1. Word 읽 기
1. 엑셀 읽 기
3. 다운로드 주소:http://www.apache.org/dyn/closer.cgi/poi/dev/
코드 구현:
package com.qianyan.test;

import java.io.File;
import java.io.FileInputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFChart.HSSFSeries;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.junit.Ignore;
import org.junit.Test;


public class TestPOI {
	
	@Test
//	@Ignore
	public void testRead1(){
		
		File file=new File("e:/test.doc");
		try {
			FileInputStream fis=new FileInputStream(file);
			WordExtractor  wordExtractor=new WordExtractor(fis);
			System.out.println(wordExtractor.getText());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		
	}
	/**
	 *      
	 */
	@Test 
	@Ignore
	public void testPara(){
		
		File file=new File("e:/test.doc");
		try {
			FileInputStream fis=new FileInputStream(file);
			WordExtractor  wordExtractor=new WordExtractor(fis);
			String [] paras=wordExtractor.getParagraphText();
			for(int i=0;i<paras.length;i++){
				System.out.print(" "+i+" -->");
				System.out.println(paras[i]);
			}
		
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	/**
	 *   Excel     :Excel  -->   --> -->       POI , :wordbook->sheet->cess
	 */
	
	/**
	 *   excel,            
	 * <p/>
	 * <p/>
	 *   :1.sheet, 0  , workbook.getNumberOfSheets()-1  
	 * 2.row, 0  (getFirstRowNum), getLastRowNum  
	 * 3.cell,* 0  (getFirstCellNum), getLastCellNum  
	 */
	@Test
	@Ignore
	public void testReadExcel() throws Exception {
		//   Excel        
		String fileToBeReade = "e:/test.xls";
		HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeReade));
		System.out.println("===SheetNum===" + workbook.getNumberOfSheets()); //  sheet 
		if(null != workbook.getSheetAt(0)){
			HSSFSheet aSheet = workbook.getSheetAt(0); //    sheet
			System.out.println("+++getFirstRowNum+++"
					+ aSheet.getFirstRowNum());
			System.out.println("+++getLastRowNum+++"
					+ aSheet.getLastRowNum());
			for(int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++){
				if(null != aSheet.getRow(rowNumOfSheet)){
					HSSFRow aRow = aSheet.getRow(rowNumOfSheet);
					//System.out.println(">>>getFirstCellNum<<<"
					//		+ aRow.getFirstCellNum());
					//System.out.println(">>>getLastCellNum<<<"
					//		+ aRow.getLastCellNum());
					System.out.println("row" + rowNumOfSheet + "->");
					for(int cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum() + 1; cellNumOfRow++){
						if(null != aRow.getCell(cellNumOfRow)){
							HSSFCell aCell =  aRow.getCell(cellNumOfRow);
							int cellType = aCell.getCellType();
							String strCell = "";
							//System.out.println(" " + cellType + " ");
							switch(cellType){
								case HSSFCell.CELL_TYPE_NUMERIC:{  //Numeric
									if(HSSFDateUtil.isCellDateFormatted(aCell)){
										//   Date   ,   Cell Date 
										strCell = HSSFDateUtil.getJavaDate(aCell.getNumericCellValue()).toString();
										System.out.println(strCell + " ");
									}else{
										strCell = aCell.getNumericCellValue() + "";
										System.out.println(strCell + " ");
									}
								}
								break;
								case HSSFCell.CELL_TYPE_STRING://String
									strCell = aCell.getRichStringCellValue().toString();
									System.out.println(strCell+ " ");
								break;
								
								default:
									System.out.println("");//       
								
							}
						}
					}
				}
			}
		}
	}
	
}

2. Jacob 을 사용 하여 Word 문 서 를 처리 합 니 다.
1. 공식 적 인 해석 은 자바 COM Bridge, 즉 자바 와 come 구성 요소 간 의 교량 이다.
2. com 은 일반적으로 dll 또는 exe 등 바 이 너 리 파일 로 나타난다.
3. office 는 windows 플랫폼 위 에 세 워 진 것 으로 그 자체 가 소프트웨어 이다. 그 가 제공 한 매크로 를 제외 하고 그 에 게 직접적인 조작 을 할 수 있 는 것 이 없 는 것 같다.windows 플랫폼 에서 이러한 서로 다른 응용 프로그램 을 이해 하기 위해 통신 에 유 니 버 설 api 문제 가 부족 하여 come 의 해결 방안 을 내 놓 았 다.저 희 는 dll 의 한 그룹 또는 여러 그룹 과 관련 된 함수 로 구성 요소 데 이 터 를 액세스 하고 전체적인 합성 을 핑계 로 모든 디 테 일 한 실현 방법 을 구체 적 으로 합 니 다.만약 에 우리 가 핑계 안의 방법 을 호출 해 야 한다 면 유일한 방법 은 핑 계 를 가리 키 는 지침 을 호출 하 는 것 이다. 그래서 전체적으로 말 하면 dll 을 사용 하여 api 의 전환 을 완성 하 는 것 이다.
4. Jacob 은 하나의 핑 계 를 통 해 워드 를 조작 하 는 activex 대상 입 니 다.지금 버 전 은 1.15 입 니 다.
5. 다운로드 주소:http://sourceforge.net/projects/jacob-project/
코드 구현: (주의: jar 패 키 지 를 추가 하 는 것 외 에 jacob - 1.17 - M2 - x64. dll jacob - 1.17 - M2 - x84. dll 두 파일 을 C: WINDOWS \ SYSTEM 32 디 렉 터 리 나 프로젝트 디 렉 터 리 로 복사 해 야 합 니 다)
package com.qianyan.test;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

public class TestJacob {

	
	public static void extractDoc(String inputFIle, String outputFile) { 
		   boolean flag = false; 
		   
		   //   Word     
		   ActiveXComponent app = new ActiveXComponent("Word.Application"); 
		   try { 
		      //   word    
		      app.setProperty("Visible", new Variant(false)); 
		      //   word   
		      Dispatch doc1 = app.getProperty("Documents").toDispatch(); 
		      Dispatch doc2 = Dispatch.invoke( 
		            doc1, 
		            "Open", 
		            Dispatch.Method, 
		            new Object[] { inputFIle, new Variant(false), 
		                  new Variant(true) }, new int[1]).toDispatch(); 
		      //   txt          Variant(7)
		      //   html          Variant(8)
		      Dispatch.invoke(doc2, "SaveAs", Dispatch.Method, new Object[] { 
		            outputFile, new Variant(8) }, new int[1]); 
		      //   word 
		      Variant f = new Variant(false); 
		      Dispatch.call(doc2, "Close", f); 
		      flag = true; 
		   } catch (Exception e) { 
		      e.printStackTrace(); 
		   } finally { 
		      app.invoke("Quit", new Variant[] {}); 
		   } 
		   if (flag == true) { 
		      System.out.println("Transformed Successfully"); 
		   } else { 
		      System.out.println("Transform Failed"); 
		   } 
		} 
	public static void main(String[] args) {
		extractDoc("E:/test.doc","E:/test.htm");
	}

}

좋은 웹페이지 즐겨찾기