2013-10-22 8 views
0

우리는 ods에서 행을 읽고 파일을 Excel에 사용하기 위해 java 및 ODF Toolkit을 사용하고 있습니다.Excel 또는 ods 파일에서 페이지 된 행을 읽는 방법?

문제는 1 행만 읽으려는 경우에도 전체 문서가로드되고 50.000 행의 ods 파일에 대한 메모리 사용량이 약 350MB라는 점입니다.

그래서 페이징으로 행을 읽는 방법을 찾고 있습니다. 언제든지

편집 1 : Odd Toolkit처럼 작동합니다. POI.

Edit2 : 답변을 수락했지만 Excel 파일에서만 작동하며 ODS 파일에 대한 답변이 없습니다.

답변

0

JDBC를 사용하여 행을로드 할 수도 있습니다.

주변이 등 다양한 JDBC 엑셀 드라이버가 있습니다 또한

https://code.google.com/p/sqlsheet/

참조 :

Connecting to excel sheet using jdbc without specifying DSN to Excel sheet

+0

sqlsheet는 좋은 생각입니다. ODS 파일에 대한 해결책이 있습니까? – kommradHomer

+0

죄송합니다, ODS 용 JDBC 드라이버가 있는지 모르겠습니다. 스프레드 시트를 ODBC 데이터 소스로 설정할 수 있으면 JDBC <> ODBC 브릿지가 있습니다. 그것이 당신을 위해 일할 것인지 모른다. 어쨌든, 나는 실제로 이것을 한 번도 해본 적이 없으며 (Excel에서는 가능하다는 것을 알았 기 때문에) 더 자세히 조사해야합니다. –

+0

SQLSheet는 여전히 POI를 사용합니다. – opticyclic

0

.ods를 .xls /.xlsx로 변환하고보다 확고한 poi api를 사용하면 도움이 될 수 있습니다. 특정 행/셀을 읽을 수 있으며 동일한 제한을 사용하여 메모리 한도 초과 방지를 방지 할 수 있습니다.

+0

당신은 그것의 메모리에 전체 문서를로드하지 않는 것이 확실은? ODF에는 셀이나 행 및 내용을 읽는 데 필요한 모든 메서드가 있지만 테이블을 가져 오려고하면 모든 데이터가 메모리로로드됩니다. – kommradHomer

+0

나는 이것에 당신을 방향을 바꾼다. http://stackoverflow.com/questions/18147585/excel-sheet-poi-validation-out-of-memory-error.Hope 그것이 당신에게 약간의 아이디어를주는 것을 돕는 것을 희망한다. 첫번째 제안 거기 상당히 명백하지만 두 번째 것은 중요한 것입니다. – Chetya

+0

필자는 그 질문과 답변을 읽었으며, POI는 ODF 툴킷과 다른 점이 없다. 그러나 페이징 필요성 해결을위한 하나의 제안 인 SAX 처리가있다. 충분히 아직 필사적이 아니다.보기를위한 감사합니다 :) – kommradHomer