2011-03-10 4 views
7

PHPExcel을 사용하여 매우 간단한 .xls 파일 (PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel5'))을 생성합니다. 해당 파일이 Excel 2010 또는 2007을 사용하여 Windows 7에서 열릴 때마다 다음 오류가 발생합니다.Windows 7 : "Excel에서 읽을 수없는 내용을 찾았습니다."

Excel에서 'XXXXXXX.xls'에 읽을 수없는 콘텐츠가 있습니다. 이 통합 문서의 내용을 복구 하시겠습니까? 이 통합 문서의 원본을 신뢰하는 경우 예를 클릭하십시오.

Windows XP에서 Excel 2010에서 동일한 파일을 열면 정상적으로 작동합니다. OpenOffice에서 같은 파일을 열면 OS와 상관없이 작동합니다.

윈도우 7/엑셀 2010 : 오류

윈도우 7/Excel 2007의 오류

윈도우 XP 2010/Excel을

윈도우 XP/Excel 2007의 작동 : 작동

모두/OpenOffice : Works

.xlsx 파일 (PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel2007'))을 생성하도록 PHPExcel에 지시하면 위의 모든 결합과 함께 작동합니다 ons.

MS 포럼에서 셀 수없이 많은 스레드가 발견되었으며 PHP 7 이외의 타사 라이브러리에서 생성 된 Excel 파일이있는 Windows 7 파일에만 영향을 미치는 것으로 보입니다. 그러나 아무도 해결책이 없습니다.

나는 또한 다음과 같은 MS KB 문서를 발견,하지만 기본 엑셀 사양에 익숙하지 않다 : http://support.microsoft.com/kb/2411912

은 다른 사람이 이것을 경험 했습니까?

+0

실제로 파일을 테스트 할 때와 동일한 상자에 생성합니까 (예 : XP 상자 및 Windows 7 상자)? 또는 테스트 할 상자간에 동일한 파일을 복사하고 있습니까? –

+0

링크 주셔서 감사합니다 : 나는 OLE 섹터 번호와 체인 마커의 끝을 살펴볼 것입니다 ... 나는 여러 개의 스트림을 지원하기 위해 어쨌든 OLE 작성자를 알아야한다고 알고 있습니다. –

+0

리눅스에서 한 번 파일을 생성합니다 서버로 복사하고 테스트 상자간에 복사/붙여 넣기를합니다. – kag

답변

2

MS 지원 사이트에서 강조 표시된 문제 인 경우 PHP_OLE의 어딘가에 PHPExcel_Shared_OLE_PPS_File 클래스에 잠겨 있습니다. 필자는 PHPExcel 사이트에서 Issue 15508으로 제기했으며 Windows 7 상자에서 주말에 디버깅을 일부 실행하려고합니다.

빠른 수정이 보장되지는 않지만 문제를 시도하고 재 작성하는 방법 및 위치를 알려주고 있습니다.

+0

와우 덕분에, 나는 당신이 실제로 PHPExcel 개발자라는 것을 깨닫지 못했습니다. – kag

+0

@kag - 내 죄를 위해, 나는 현재 유일하게 활동중인 개발자입니다. 나는 일자리를 바꾸는 동안 몇 달 동안 PHPExcel 작업을 줄이려고 노력하고있다 ... 처음에는 매우 오래 집중적으로 새로운 역할을 시작하기 전에, 나의 옛 직업에 대한 핸드 오버를 완성하는데 집중했다. 하지만 이것은 중요한 문제가 될 수 있으므로 우선 과제로 삼을 것입니다. –

1

ISO-8859-1 대신 적절한 UTF-8 인코딩 된 문자열을 사용했을 때 수정되었습니다. 어쩌면 PHPExcel은 나쁜 인코딩에 대해 암시 할 수 있습니까?

1

UTF-8에 제목, 작성자, LastModifiedby 등 ... 필드를 써야합니다. 이것은 나의 해결책이었다.