검색엔진 을 직접 작성 합 니 다 (자주 검색 하 세 요 과정 7 \ # 문 서 를 해석 하 는 WORD \ #) (자바, Lucene, hadop)
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");
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.