우리는 모든 행을 반복하면서 각 행 객체에 getLastCellNumber
을 호출하여 최대 개수의 열을 얻을 수 있다는 것을 알고 있습니다. 그러나이 접근법은 파일에 많은 시간이 걸리기 때문에 피하려고하는 모든 행을 반복해야합니다 백만 열 (이것은 내가 읽을 것으로 예상되는 종류의 파일입니다).최대 개수를 얻는 방법. POI를 사용하여 XLSX 파일에 채워진 컬럼?
POI는 Excel 파일을 읽을 때 DimensionsRecord
클래스의 개체에 시트 크기 (첫 번째 행 번호, 마지막 행 번호, 첫 번째 열 번호, 마지막 열 번호)를 저장합니다. 그래서이 물건을 얻으면 내가 필요한 것을 얻을 수 있습니다. 이러한 객체는 POI의 내부 클래스 인 Sheet 클래스에서 가져올 수 있습니다. XLS 파일에 필요한 것을 추출 할 수 있었지만 XLSX 파일의로드 블록을 쳤습니다.
POI는 XLSX에 대한 DimensionsRecord
개체도 유지합니까?, 그렇다면 추출하려는 사용자가 있습니까? 아니면이 일을 할 수있는 다른 사람이 있습니까 ?? 도와주세요!
내 접근 방식이 올바른지 아닌지, 즉 POI의 내부 클래스를 사용하고 있는지 (즉, 내 작업이 완료 됨) 올바른지 또는 공개 된 API에만 의존해야하는지 태워 버리는).
을 회신. 나는 그것을 시도하고 잘 작동하고있다. 왜 CTDimensions가 잘못 될 수 있는지 이해하지 못한다. .. 이걸 사용하는 것이 얼마나 위험 할 수 있는지 알려주시겠습니까? DimensionsRecord를 추출하는데도 제가 길다. (약 30 코드 라인) POI의 내부 시트 객체를 생성 한 다음 레코드 목록에서 DimensionsRecord를 가져 와서이 작업을 수행하고 있습니다 ... XLSX CTDimensions를 사용한 것처럼 XML을 수행하는 간단한 방법이 있습니까 ?? – rirhs
Excel에서 레코드를 최신 상태로 유지해야하지만 다른 프로그램에서 수행 할 것인지 확실하지 않습니다. hssf.model.InternalSheet의 387 줄을보고 항상 거기에 있지 않거나 업데이트되는 것에 대한 모든 설명을 읽어보십시오. DimensionsRecord를 얻으려면 InternalSheet에서 레코드를 가져와야합니다. – Gagravarr
내부 시트 (poi lib 3.7)의 소스 코드를 확인한 후이 링크를 확인하십시오. http://grepcode.com/file/repo1.maven.org/maven2/org.apache.poi/poi/3.7/org/apache/ poi/hssf/model/InternalSheet.java # InternalSheet 위의 531 행에 치수 레코드가 올바르게 설정되었다는 주석이 있습니다. – rirhs