2013-05-30 1 views
1

ParseExcel에서 gnumeric에 의해 생성 된 .xls 스프레드 시트를 구문 분석하는 데 문제가 있습니다. 문제는 gnumeric으로 생각됩니다. PsrseExcel의 row_range() 메소드는 285 개의 행만 사용 중일 때 (0, 500)를 반환합니다.Perl - CPAN Spreadsheet :: ParseExcel 및 Gnumeric

셀 A1 - I285를 선택하고 파일> 인쇄 영역> 인쇄 영역을 선택하고 .xls 파일을 저의 Perl 스크립트로 저장 및 처리하기 전에 아무런 효과가 없습니다.

파일에는 실제로 두 개의 워크 시트가 있습니다. 하나는 행의 수를 올바르게 계산하고 다른 행은 계산하지 않습니다. 두 워크 시트를 모두 만들었지 만 내가 어떻게 다르게했을지 모릅니다.

답변

0

ParseExcel의 row_range() 메소드가 반환 (0, 500)에만 285 행이 사용 중입니다.

Spreadsheet :: ParseExcel은 최대 및 최소 행과 열 값을 저장하는 Excel 파일의 이진 레코드에서 row_range() 데이터를 읽습니다. 이 값을 계산하기 위해 워크 시트를 반복하지 않습니다.

따라서 row_range()이 사용중인 행의 범위로보고하는 경우 (0, 500)이 값은 해당 레코드에 저장된 값입니다.

차이점은 서식이 있지만 데이터가없는 행이 원인 일 수 있습니다. Excel은 "빈"셀과 "빈"셀을 구별합니다. "빈"셀은 데이터를 포함하지 않지만 "빈"셀은 데이터를 포함하지 않지만 서식을 포함하는 셀입니다. Excel은 "Blank"셀을 저장하지만 "Empty"셀은 무시합니다.

셀 A1 - I285를 선택하고 File> Print Area> Set Print Area를 선택하여 .xls 파일을 저의 Perl 스크립트로 저장 및 처리하기 전에 아무런 효과가 없습니다.

인쇄 영역은 row_range()에 의해보고 된 범위에 영향을 미치지 않습니다.

파일을 줄이 285- 데이터로 줄이려면 286-501에서 행을 선택하고 삭제 한 다음 파일을 저장하십시오.

또는 빈 데이터가있는 셀만 포함하는 행을 무시하도록 프로그램을 설정하십시오.

+0

그건 과도한 행 (및 열!)을 속이는 * * 삭제 * 할 것 같습니다. gnumeric에만 적용될 수 있습니다. MS Excel을 사용할 때 많은 작업을해야한다는 것을 기억하지 않습니다. 어쨌든, 문제는 해결되었고, 고마워. – Chap

0

인쇄 할 수없는 문자가 포함 된 행이 의심 스럽지만 코드를 게시하지 않으면 내가 말할 수있는 방법이 없습니다.

는 인쇄 할 수없는 문자의 경우, 삽입하려고 어떤 루프하면 문제의 원인이 나쁜 소년 :

next unless $cell;