繁体   English   中英

将 html 表导出到可下载的 excel 并出现 PHP 问题

[英]Exporting html table to downloadable excel with PHP issues

所以,我在将表导出到 excel 时遇到了一些问题。

它已生成,但仅出现第一组标题。

我有一张这样的桌子:

<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>

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

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'];

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

怎么了?

您的 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 文件

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM