2013-12-23 4 views
10

큰 xlsx 파일을 가지고있어 검색 옵션을 구현해야하는 거대한 양의 xlsx 파일 jaxl jar뿐만 아니라 Apache POI jar도 사용하여 행과 열 사이의 검색 만들어졌다. 그러나xlsx 및 xls 파일에서 Java를 사용하여 검색

String searchValue="my_value_to_search"; 
    for (int i = 0; i < sheet.getColumns(); i++) { 
     for (int j = 0; j < sheet.getRows(); j++) { 
      value = sheet.getCell(i, j); 
      valueType = value.getType(); 
      String val=getCellType(valueType, value); 
      if (val != null&&val==searchValue) { 
       // To do manipulation. 
      } 
     } 
    } 
+3

그런 작업에 멀티 스레딩을 한 번 사용했습니다. 내 메인 스레드가 xlsx 파일을 구문 분석하고 통합 문서를 만든 다음 한 번에 여러 레코드로 메인 스레드가 제공하는 5 개의 다른 스레드를 생성했습니다. 이 방법은 성능이 상당히 향상되었습니다. –

답변

6

병목 현상은 보통의 엄청난 금액입니다 ... 어떤 하나 Excel 파일에 빠른 검색을 수행 할 수있는 jar 파일이나 다른 개념입니다 나를 도울 수 빅 데이터 사이를 횡단하는 거대한 시간이 걸렸습니다 한 번에 큰 XLSX 파일을 메모리에 표현하는 데 필요한 메모리 (XLS는 큰 디자인 일 수는 없지만 일반적으로 문제가되지 않습니다.) 메모리 문제없이 정말 큰 XLSX 파일에서 검색하려면, 당신이 할 수 있습니다 :

  • XLSX 파일이 사실에 ZIP 압축 파일입니다, 당신은 그것을 열고이 ZIP 파일 인 것처럼 내용을 읽을 수 있습니다. 우편 내부
  • 는 최대의 성능과 최소한 메모리 소비에 대한 콜백을 사용하여 일반 XmlReader를을 (사용하여 이러한 XML 파일을 구문 분석 할 수
  • (등등 및 sheet2.xml 등) 파일 sheet1.xml와 "XL/워크 시트"폴더에 있습니다).

희망이 있습니다.

+0

재생 해 주셔서 감사합니다. 내 또 다른 질문은 내 큰 xls 파일에 무엇이 될 것인가? – ashokramcse

+2

XLS 파일은 최대 65K 라인까지만 가능하며 일반적으로 메모리에 잘 맞습니다. 불행히도 XLSX와 마찬가지로 내가 알고있는 비슷한 해결 방법이 없습니다. – geert3

+0

내 시나리오에서는 시트마다 더 많은 수의 시트가 있고 모든 시트에는 고유 값이있는 모든 셀이 채워져 xls 파일을 파싱하는 데 더 많은 시간이 걸립니다. – ashokramcse