클라이언트 시스템의 스프레드 시트에 MySQL 테이블 데이터를 다운로드하는 PHP 응용 프로그램이 있습니다. Redhat을 실행하는 컴퓨터에서 Open Office Scalc에 대해 잘 작동하는 웹의 여러 위치에서 코드를 발견했습니다. 내가 겪었던 문제는 Open Office 스프레드 시트가 아닌 Windows PC에서 MS Excel로 다운로드하려고했을 때였습니다. 문제는 셀에 삽입 된 문자열의 길이와 관련이있는 것으로 보입니다. 너무 길면 Excel에서 파일이 손상되었다고 생각하여로드하지 않습니다. "너무 오래"은 MS Excel 사양이 최대 길이 인 32,000 개라고하더라도 255 자 정도 인 것으로 보입니다.PHP "pack"함수를 사용하여 Excel로 데이터를 다운로드하는 중 문제가 발생했습니다.
문제를 더 자세히 조사하기 위해 탭으로 구분 된 값 파일과 동일한 데이터를 다운로드하고 Excel에서이를 스프레드 시트로 변환하려고했습니다. 이 방법을 사용하면 매우 긴 문자열을 스프레드 시트 셀에로드하는 데 문제가 없습니다. 따라서 실제로 255 자 이상의 문자열은 Excel 셀에 삽입 될 수 있지만 사용중인 코드는 Open Office에서 작동하지만 실제로는 삽입 할 수 없습니다. 긴 문자열에는 보존하려는 캐리지 리턴이 있고 tsv 파일이 스프레드 시트에로드 될 때 캐리지 리턴은 행 분리 자로 해석되므로 tsv 파일을 사용하면 문제가 해결되지 않습니다. 스프레드 시트 셀에 문자열을 기록
PHP 함수이다 :
function xlsWriteLabel($Row, $Col, $Value) {
$L = strlen($Value);
echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
echo $Value;
return;
}
상기 기능에 부가하여 스프레드 시트로 이행하기위한 다른 필요한 코드에서 발견 될 수
:
http://www.appservnetwork.com/modules.php?name=News&file=article&sid=8
위의 코드에서 "pack"함수에 전달 된 다양한 인수의 의미에 대한 설명을 찾지 못했습니다. 위의 함수에서 인수를 하나 변경하면 문제가 해결 될 수 있는지 궁금합니다.
누군가가이 문제에 대한 해결책을 가지고 있다면, 나는 그것을 듣고 싶어합니다.
blol/text의 라벨 기능이 충분하지 않다고 생각합니다. 무엇이이 문제를 해결합니까? – Michelangelo
나는 그것을 가져 간다, 영어가 당신의 모국어가 아니다, 당신이 의미하는 바를 설명하려고 노력할 수 있으면, 나는 당신을 도우려고 노력할 것이다. –