使用PHP问题将html表导出为可下载的Excel

时间:2011-06-29 08:37:21

标签: php javascript export-to-excel

所以,我在将表格导出为ex​​cel时遇到了一些问题。

它已生成,但只显示第一组标题。

我有一张这样的表:

<table>         
        <thead>
            <tr>
                <th colspan="5">Incoming</th>
            </tr>
            <tr>
                <th>From</th>
                <th>To</th>
                <th>Date</th>
                <th>Duration</th>
                <th>Status</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td style="text-align: center;">942367233</td>
                <td style="text-align: center;">-</td>
                <td style="text-align: center;">15-06-2011 08:24</td>
                <td style="text-align: center;">00:00</td>
                <td style="text-align: center;">Abandoned</td>
            </tr>
            <tr>
                <td style="text-align: center;">935761500</td>
                <td style="text-align: center;">1956</td>
                <td style="text-align: center;">15-06-2011 09:20</td>
                <td style="text-align: center;">00:00</td>
                <td style="text-align: center;">Answered</td>
            </tr>
            <tr>
                <td style="text-align: center;">942367233</td>
                <td style="text-align: center;">1957</td>
                <td style="text-align: center;">15-06-2011 09:21</td>
                <td style="text-align: center;">02:16</td>
                <td style="text-align: center;">Answered</td>
            </tr>
        </tbody>
</table>

表格上的表格

<form action="toexcel.php" method="post" target="_blank"
        onsubmit=\'$("#datatodisplay").val($("#data").html())\'>
        <input  type="image" src="/images/icons/Floppy-48x48.png" width="12" height="12">
        <input type="hidden" id="datatodisplay" name="datatodisplay" />
        </form>

然后,在它应该生成excel的PHP:

header("Content-type: application/vnd.ms-excel; name='excel'");
header("Content-Disposition: filename=ficheroExcel.xls");  
header("Pragma: no-cache");  
header("Expires: 0");
echo $_POST['datatodisplay'];

但只显示第一组标题。我试图删除标题但它也不起作用。

怎么了?

2 个答案:

答案 0 :(得分:0)

你的HTML错了。 HTML DTD声明一个表可能只包含一个thead和一个tfoot,但是包含多个tbody标记:

<!ELEMENT table
 (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>

这是你的主要问题; HTML无效。

除此之外:

  • 您告诉浏览器(和excel)HTML文件是.XLS文件,这是完全错误的。试试.html。
  • 使用W3C HTML验证程序验证表格HTML页面,并确保其验证
  • 如果您不关心布局,请使用CSV文件而不是HTML文件

答案 1 :(得分:0)

尽管聊天,但我能够解决这个问题。似乎转义字符没有在javascript中转义,所以我要添加以下内容,解决问题:

echo str_replace('\"','"', $_POST['datatodisplay']);;