1

PHP を使用して Excel をエクスポートするときに、この警告を削除する方法を教えてください。

開こうとしているファイル "example.xls は、ファイル拡張子で指定された形式とは異なります。

これが私のコードです。どこが間違っているかを指定してください

<?php

// Start a session
session_start();

// Define variables from $_SESSION and $_GET
$firstname = $_SESSION['firstname']; 
$lastname = $_SESSION['lastname'];
$username = $_SESSION['username'];

$start = $_GET['start'];
$end = $_GET['end'];
$ProviderID = $_GET['ProviderID'];
$summarytype = $_GET['summarytype'];
$subspeciality = $_GET['subspeciality'];

$export = $_GET['export'];

// Connect to mysql db
include ("access.php");

header("Content-type: application/vnd.ms-excel; name='excel'");
header("Content-Disposition: filename=export.xls");
// Fix for crappy IE bug in download.
header("Pragma: ");
header("Cache-Control: ");

error_reporting("E_ALL");

$sql = "SELECT *, master.EmtracSigChange AS 'SigChange' FROM master, nightrad WHERE master.EmtracSigChange='Yes' AND master.MaryGrade!='' AND master.InternalExamID=nightrad.InternalExamID AND master.TranscriptionDTTM <= '$end' AND master.TranscriptionDTTM >= '$start'";

$result = mysql_db_query('testDb',$sql);

if(!$result) {
echo "<p>No matches to your query</p>";
echo "<p>Click back on your browser to change your query parameters.</p>";
die(mysql_error());
}

?>
<html>
<head></head>
<body>
<table border="1" cellspacing="0" cellpadding="3">
<tr>
<th bgcolor="#0099FF" scope="col">Accession</th>
<th bgcolor="#0099FF" scope="col">Transcribed</th>
<th bgcolor="#0099FF" scope="col">Turnaround time</th>
<th bgcolor="#0099FF" scope="col">Attending</th>
<th bgcolor="#0099FF" scope="col">Res or fellow</th>
<th bgcolor="#0099FF" scope="col">Modality</th>
<th bgcolor="#0099FF" scope="col">Exam</th>
<th bgcolor="#0099FF" scope="col">Discrepancy</th>
<th bgcolor="#0099FF" scope="col">Folder</th>
<th bgcolor="#0099FF" scope="col">Comment</th>
</tr>
<?php 
// Add all values in the table to $out.
while ($row = mysql_fetch_assoc($result)) {
$CompletedDTTM = $row['CompletedDTTM'];
$TranscriptionDTTM = $row['TranscriptionDTTM'];
$date = date("Y-m-d", strtotime($TranscriptionDTTM));

// Converting turnaround time from DTTM to time
$parsedtime = strtotime($CompletedDTTM . " GMT");
$convertedtime = gmdate("H:i:s", $parsedtime);

$parsedtime1 = strtotime($TranscriptionDTTM . " GMT");
$convertedtime1 = gmdate("H:i:s", $parsedtime1);
$parsedtat = $parsedtime1 - $parsedtime;
$turnaroundtime = gmdate("H:i", $parsedtat);

?>
<tr >
<td><?php echo $row['AccessionNumber']; ?></td>
<td><?php echo $date; ?></td>
<td><?php echo $turnaroundtime; ?></td>
<td><?php echo $row['AttendingLastName']; ?></td>
<td><?php echo $row['LastName']; ?></td>
<td><?php echo $row['Modality']; ?></td>
<td><?php echo $row['ExamDesc']; ?></td>
<td><?php echo $row['MaryGrade']; ?></td>
<td><?php echo $row['MaryFolder']; ?></td>
<td><?php echo $row['MaryComment'] ?></td>

</tr>

<?php
}      
?>

</table>
</body>
</html>

それは私にデータを提供しますが、問題は開こうとすると警告メッセージも表示されることです.助けてください

4

2 に答える 2

1

HTMLをExcelファイルに出力しているようです。fputcsv関数を使用してCSV 値を出力することをお勧めします。content-type には以下を使用します。

  header('Content-Type: text/csv; charset=utf-8');
  header('Content-Disposition: attachment; filename= export.csv');
于 2013-02-11T06:42:25.417 に答える