我有一个用PHP构造的表,它显示了mysql表的结果。
像这样:
$sql = mysql_query("SELECT * FROM survey");
echo "<table border='1'>
<tr>
<th>Question 1</th>
<th>Question 2</th>
<th>Question 3</th>
<th>Question 4</th>
<th>Question 5</th>
<th>Question 6</th>
<th>Question 7</th>
<th>Question 8</th>
<th>Question 9</th>
<th>Question 10</th>
<th>Question 11</th>
<th>Question 12</th>
<th>Question 13</th>
<th>Question 14</th>
<th>eMail</th>
</tr>";
while ($row = mysql_fetch_array($sql))
{
echo "<tr>";
echo "<td>" . $row['Question1'] . "</td>";
echo "<td>" . $row['Question2'] . "</td>";
echo "<td>" . $row['Question3'] . "</td>";
echo "<td>" . $row['Question4'] . "</td>";
echo "<td>" . $row['Question5'] . "</td>";
echo "<td>" . $row['Question6'] . "</td>";
echo "<td>" . $row['Question7'] . "</td>";
echo "<td>" . $row['Question8'] . "</td>";
echo "<td>" . $row['Question9'] . "</td>";
echo "<td>" . $row['Question10'] . "</td>";
echo "<td>" . $row['Question11'] . "</td>";
echo "<td>" . $row['Question12'] . "</td>";
echo "<td>" . $row['Question13'] . "</td>";
echo "<td>" . $row['Question14'] . "</td>";
echo "<td>" . $row['eMail'] . "</td>";
}
echo "</table>";
我想要做的是将此表输出到excel文件中,不包含任何源代码或表标记。有没有办法可以做到这一点?我对互联网上的信息感到不知所措,不太确定我需要什么。
如果可能的话,我更愿意只使用PHP,而不需要任何额外的库。
答案 0 :(得分:3)
是否要使用PHP脚本下载Excel文件(即PHP输出.xls文件),或者您是否希望它能够生成HTML输出,您可以将其复制/粘贴到Excel文件中而不会丢失格式?< / p>
如果是前者,请查看this nifty tool
如果您只是希望它生成可以复制/粘贴到Excel中的HTML,只要您的表格格式正确(并且从您的源代码中,您似乎需要在其中添加&lt; / tr&gt;你的while循环结束了)那么你应该能够drag and drop it
或者,只要没有&lt; html&gt;,Excel 应该足够智能识别HTML表格。标记封装它。 this article解释了这个过程,但基本上你可以发送一个Excel文件(根据第一个“漂亮的工具”建议):
header("Content-type: application/vnd.ms-excel");
echo "
<table>
...
</table>";
答案 1 :(得分:2)
输出Excel原生格式会非常复杂。这就是为什么有它的库。另一方面,CSV很容易,Excel可以读取它。
$filePath = sys_get_temp_dir() . '/test.csv';
$file = fopen($filePath, '-w');
while (false !== ($row = mysql_fetch_array($sql)))
{
fputcsv($file, $row);
}
// rewind both pointers
mysql_data_seek($sql, 0);
fseek($file, 0);
// add headers
$rowForHeaders = mysql_fetch_array($sql);
fputcsv($file, array_keys($rowforHeaders));
fclose($file);
// to send the file via the http response
header('Content-type: application/vnd.ms-excel');
header('Content-disposition: attachment; filename="mytable.csv"');
header('Content-length: '.filesize($filePath));
print file_get_contents($filePath);
exit;
答案 2 :(得分:0)
您可以使用可以通过excel打开的csv(逗号分隔值):
while ($row = mysql_fetch_array($sql))
{
echo '"'. $row['Question1'] . '";';
echo '"'. $row['Question2'] . '";';
echo '"'. $row['Question3'] . '";';
echo '"'. $row['Question4'] . '";';
echo '"'. $row['Question5'] . '";';
echo '"'. $row['Question6'] . '";';
echo '"'. $row['Question7'] . '";';
echo '"'. $row['Question8'] . '";';
echo '"'. $row['Question9'] . '";';
echo '"'. $row['Question10'] . '";';
echo '"'. $row['Question11'] . '";';
echo '"'. $row['Question12'] . '";';
echo '"'. $row['Question13'] . '";';
echo '"'. $row['Question14'] . '";';
echo '"'. $row['eMail'] . '"\n';
}