2016-10-12 2 views
1

나는 sqlsrv에서 질의와 함께 PHP 파일을 가지고 있고, 잘 실행되며, PHPExcel 또는 라이브러리없이 Excel 파일을 생성한다. Excel 파일은 생성되지만 다음 셀에서는 결과를 쓴 후에 쓰게된다. 이 같은 이상한 문자 : á ±이상한 문자를 쓰는 PHPExcel

ÐÏà¡, 네 þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿ

þÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿà ... ŸòùOh« '+'³Ù0¸ @ Hh를 € ~ ¤ ° äUntitled SpreadsheetUnknown CreatorUnknown 창조주 @ ÐM| $ Ò @ ÐM| $ Ò» INB ° = ¼ % r8X "1ÜCalibriàõÿ À àõÿ À àõÿ À àõÿ À àõÿ à àõÿ à àõÿ à àõÿ à àõÿ à àõÿ à àõÿ à àõÿ à àõÿ à àõÿ à àõÿ A A A € "ÿ'â8ÿÿÿÿÿÿÿÿÿÿÿÿ €€€€€€€€€ AAA €€€ ™™ ÿ ™ 3fÿÿÌÌÿÿffÿ €€ 에프 ÌÌÌÿ € YYYYYY €€€€€ ÿÌÿÌÿÿÌÿÌÿÿ ™™ Ìÿÿ ™ II ™ ÿÿÌ ™ 3fÿ3ÌÌ ™ ÌÿÌÿ ™ ÿfff ™ --- 3F3 ™ f333 ™ 3 ™ 3f33 * 333 ... D WorksheetÁÁgæ®üXNombreDepartamentoFecha12/10월/2016 » 에서 ™ "dXX333333? 333333? U} $ } $} $} $} $} $} $} $} 달러} ý ýýý ý> ÃÆ'à ¢ â, ¬ Å" ¶ @ d를 << þÿÕÍÕœ dggÿÿÿÿÿ. "- +, ù®0¼HPX`hp xŽä WorksheetFeuilles calculRoot Entryÿÿÿÿÿÿÿÿ ÀFÐM| $ ÒÐM| $ Ò € SummaryInformation (YYYY ÀFèWorkbookÿÿÿÿÿÿÿÿÿÿÿÿ ÀFdDocumentSummaryInformation8ÿÿÿÿÿÿÿÿÿÿÿÿ ÀFìþÿÿÿþÿÿÿþÿÿÿýÿÿÿÿÿÿÿ 드 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

누구든지 수정 방법을 알고 있습니까? 나는 PHP의 다른 버전으로, 원격 서버에 로컬로 테스트하고 동일한 ....

Here's 코드 진행됩니다

<?php 

require_once 'PHPExcel.php'; 
require_once 'PHPExcel/IOFactory.php'; 

$server = "192.168.1.240"; 
$info = array("Database"=>"Ariel","UID"=>"sa","PWD"=>""); 
$conn = sqlsrv_connect($server, $info); 
$param = array('ReturnDatesAsStrings'=> true); 
$opt = array("Scrollable" => SQLSRV_CURSOR_KEYSET); 

$objPHPExcel = new PHPExcel(); 

$fec1 = $_GET["fecha1"]; 
$fec2 = $_GET["fecha2"]; 
$suc = $_GET["sucursal"]; 
$nom = 'Nombre'; 
$per = 'Personal'; 
$reg = 'Registro'; 
$hreg = 'Hora Registro'; 
$con = 'Concepto'; 
$fecd = 'Fecha'; 
$obs = 'Observaciones'; 
$dep = 'Departamento'; 

$sql = "select personal, (nombre +' '+apellidopaterno+' '+apellidomaterno) as '$nom', departamento as '$dep' 
from personal where nombre like '%$nom%' and estatus = 'Alta' and sucursaltrabajo = '$suc'"; 

$sql2 = "select (p.nombre +' '+p.apellidopaterno+' '+p.apellidomaterno) as '$nom', ad.personal as '$per',ad.registro as '$reg', ad.horaregistro as '$hreg',ad.concepto as '$con', 
ad.fechad as '$fecd', ad.observaciones as '$obs' 
from asiste a join asisted ad on a.id= ad.id join personal p on p.personal = ad.personal 
where ad.sucursal = '$suc' and a.fechaemision between '$fec1' and '$fec2' order by ad.personal,ad.fechad"; 

$query = sqlsrv_query($conn, $sql2); 

$query2 = sqlsrv_query($conn, $sql); 

$objPHPExcel->setActiveSheetIndex(0); 
$objPHPExcel->getActiveSheet()->setCellValue('A3', 'Nombre'); 
$objPHPExcel->getActiveSheet()->setCellValue('B3', $nom); 
$objPHPExcel->getActiveSheet()->setCellValue('A4', 'Departamento'); 
$objPHPExcel->getActiveSheet()->setCellValue('B4', $dep); 
$objPHPExcel->getActiveSheet()->setCellValue('H4', 'Fecha'); 
$objPHPExcel->getActiveSheet()->setCellValue('I4', date("d/M/Y")); 

echo "<table border='1'><tr>"; 
echo "<th>$nom</th>"; 
echo "<th>$per</th>"; 
echo "<th>$reg</th>"; 
echo "<th>$hreg</th>"; 
echo "<th>$con</th>"; 
echo "<th>$fecd</th>"; 
echo "<th>$obs</th>"; 

while ($row = sqlsrv_fetch_array($query)) { 

    $nom = $row['Nombre']; 
    $per = $row['Personal']; 
    $reg = $row['Registro']; 
    $hreg = $row['Hora Registro']; 
    $con = $row['Concepto']; 
    $fecd = $row['Fecha']; 
    $obs = $row['Observaciones']; 

    echo "<tr>"; 
    echo "<th>".$nom."</th>"; 
    echo "<td>".$per."</td>"; 
    echo "<td>".$reg."</td>"; 
    if (!empty($hreg)) { 
     echo "<td>".$hreg."</td>"; 
    } 
    echo "<td>".$con."</td>"; 
    if (!empty($fecd)) { 
     echo "<td>".$fecd->format("Y-m-d H:i:s")."</td>"; 
    } 
    echo "<td>".$obs."</td>"; 
} 

echo "</table>"; 

//header("Content-Type: application/vnd.ms-excel"); 
//header("Expires: 0"); 
//header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
//header('content-disposition: attachment;filename="Reporte '.$_GET['fecha1'].'\'\''.$_GET['fecha2'].'.xls"'); 

header('Content-Type: application/vnd.ms-excel'); 
header('content-disposition: attachment;filename="Reporte '.$_GET['fecha1'].'\'\''.$_GET['fecha2'].'.xls"'); 
header('Cache-Control: max-age=0'); 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
$objWriter->save('php://output'); 

    sqlsrv_close($conn); 
?> 
+0

우리는 어떤 도움이되기 위해 코드를보아야합니다. – nogad

+0

올바른 http 응답 헤더가 브라우저에 나타나면이를 설정하십시오. 파일 저장 외에 아무것도 브라우저에 보내지 않았는지 확인하십시오. 후자는 다음 셀에 다음과 같은 코멘트가 주어질 가능성이 높습니다. " –

+0

GAAAHHHHHH !!!! 이제 cde를 추가 했으므로 이해하기 쉽습니다. 단일 요청은 HTML 마크 업 또는 Excel 파일 중 하나만 응답을 생성 할 수 있지만 둘 다 ..... 응답은 http 작동 방식입니다. –

답변

1

를 헤더 앞에 다음 코드를 추가

ob_end_clean(); 
+0

나를 위해 일했습니다, 감사합니다! – redigaffi

관련 문제