채택완료

phpexcel로 테이블을 엑셀파일로 다운로드 하는데 파일형식 오류가 나옵니다.

2023-09-12 (화) 18:59:17 4,625

안녕하세요.

phpexcel로 테이블을 엑셀파일로 다운로드 받으려고 하면  아래 이미지처럼 오류가 나옵니다.33158343_1694512688.9872.png

A서버에서는 정상작동이 되는데 

cafe24로 옮기면 다른 부분은 정상인데 phpexcel로 다운로드시에 저 오류가 발생합니다.

혹 어떤게 문제인지 알 수 있을까요??

|

답변 5개 / 댓글 6개

채택된 답변
+20 포인트

저장한 액셀 화일을 문서편집기로 열어보면 첫줄에 에러코드가 있습니다

에러코드를 올려보세요

답변에 대한 댓글 2개

확장자를 TXT 로 바꾸고 열어 보세요.
말씀하신대로 확인해보니 php 오류메세지가 나오면서 아래 처럼 오류가 나옵니다.
Message: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"?
Filename: Shared/OLE.php

오류메세지로 확인해보니 아래 해결하신 분이계시네요;; 좋은 정보 감사합니다!!!
https://dhdl-it.tistory.com/58
2023-09-13 (수) 15:41:47

요걸 한번 사용해 보세요. xlsx 로 저장됩니다.

GitHub - mk-j/PHP_XLSXWriter: Lightweight XLSX Excel Spreadsheet Writer in PHP

xlsxwriter.class.php 파일 다운받고( 이 파일만 필요합니다.)

 

Copy
<?php
include_once('./_common.php');

set_include_path( get_include_path().PATH_SEPARATOR."..");
include_once("xlsxwriter.class.php");

$f_name = "테스트";

 

$result = sql_query("select wr_id,wr_content,wr_name,wr_last,wr_1,wr_2,wr_3,wr_4,wr_5,wr_6,wr_7,wr_8,wr_9,wr_10 from {$write_table} order by wr_name");

$header = [];
$widths = [];

 

// $header 제목명은 모두 달라야 됨
$header["연번"] = 'integer';
$header["예약자"] = 'string';
$header["예약일자"] = 'string';
$header["예약시간"] = 'string';
$header["전화번호"] = 'string';
$header["성별"] = 'string';
$header["요청사항"] = 'string';
$header["신청일"] = 'string';

 

//셀너비
$widths[] = 10; $widths[] = 20; $widths[] = 20; $widths[] = 20; $widths[] = 20; $widths[] = 20;$widths[] = 50; $widths[] = 30;

 

$writer = new XLSXWriter();

 

$styles1 = array('font'=>'맑은 고딕','font-size'=>12,'font-style'=>'bold', 'fill'=>'#ccff999', 'halign'=>'left', 'valign'=>'center', 'border'=>'left,right,top,bottom', 'widths'=>$widths);

$styles2 = array( 'font'=>'맑은 고딕','font-size'=>12, 'halign'=>'left', 'valign'=>'center', 'border'=>'left,right,top,bottom','wrap_text'=>true);
 

$writer->writeSheetHeader('Sheet1', $header, $styles1);    //제목줄 서식 포함

$contents = [];

$x = 0;

foreach ($result as $field) {
    $x++;
    $contents[] = $y;
    $contents[] = $field['wr_name'];
    $contents[] = $field['wr_1'];
    $contents[] = $field['wr_2'];
    $contents[] = $field['wr_3'];
    $contents[] = $field['wr_4'];
    $contents[] = $field['wr_content'];
    $contents[] = $field['wr_last'];

    $writer->writeSheetRow('Sheet1', $contents, $styles2);
    $contents = [];
}

$filename = $f_name."신청현황.xlsx";

$writer->writeToFile(G5_DATA_PATH.'/tmp/'.$filename);

$filepath = G5_DATA_PATH.'/tmp/'.$filename;
$filepath = addslashes($filepath);
$original = urlencode($filename);

if(preg_match("/msie/i", $_SERVER["HTTP_USER_AGENT"]) && preg_match("/5\.5/", $_SERVER["HTTP_USER_AGENT"])) {
    header("content-type: doesn/matter");
    header("content-length: ".filesize("$filepath"));
    header("content-disposition: attachment; filename=\"$original\"");
    header("content-transfer-encoding: binary");
} else if (preg_match("/Firefox/i", $_SERVER["HTTP_USER_AGENT"])){
    header("content-type: file/unknown");
    header("content-length: ".filesize("$filepath"));
    header("content-disposition: attachment; filename=\"".basename($filename)."\"");
    header("content-description: php generated data");
} else {
    header("content-type: file/unknown");
    header("content-length: ".filesize("$filepath"));
    header("content-disposition: attachment; filename=\"$original\"");
    header("content-description: php generated data");
}
header("pragma: no-cache");
header("expires: 0");
flush();

$fp = fopen($filepath, "rb");

if (!fpassthru($fp)) {
    fclose($fp);
}

 

//파일 삭제

$delete_file = G5_DATA_PATH.'/tmp/'.$filename;
if(file_exists($delete_file) ){
    @unlink($delete_file);
}

실제로 엑세파일 저장하고 열리는데는 문제가 없으므로,

그 안내문 무시하고 열어서 사용하시면 됩니다.

답변에 대한 댓글 2개

답변 감사합니다!!!
엑셀을 열면 깨져서 보여서 해결을 해야 할듯합니다.
엑셀이 깨져보이는건
위의 메세지와는 다른 문제 입니다.
2023-09-12 (화) 20:16:05

서버에서 필요한 라이브러리를 올바르게 설치했는지 확인해보세요.

PHP 버전과 호환되는지 확인하셔야 합니다.


또한 PHPExcel은 더 이상 새로운 지원이 중단된 상태입니다. PhpSpreadsheet 업그레이드 고려해봐야합니다.

답변에 대한 댓글 1개

좋은 정보 감사합니다!!!
phpspreadsheet도 알아봐야겠네요.. 감사합니다!!!
2023-09-12 (화) 19:48:19

카페24 서버환경이 다르면 그럴수도있어요

답변에 대한 댓글 1개

넵!! 환경이 달라서 그런듯합니다. 같은 서버에서는 이상이 없네요;;
답변 감사합니다.

답변을 작성하려면 로그인이 필요합니다.