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

안녕하세요.

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

 

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

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

 

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

답변 5개

채택된 답변
+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

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

요걸 한번 사용해 보세요. 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개

답변 감사합니다!!!
엑셀을 열면 깨져서 보여서 해결을 해야 할듯합니다.
엑셀이 깨져보이는건
위의 메세지와는 다른 문제 입니다.

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

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

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


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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

좋은 정보 감사합니다!!!
phpspreadsheet도 알아봐야겠네요.. 감사합니다!!!

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

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

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

로그인
🐛 버그신고