You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除table2excel生成Excel文件中的代码内容

问题:table2excel导出Excel时包含网页表格中不存在的代码

使用table2excel库导出表格时,生成的Excel文件里出现了网页表格中未显示的代码片段,网页端表格显示正常。

导出按钮JS代码:

$('#to_excel').click(function(e){
    e.preventDefault()
    $("#jv_table").table2excel({
       name: "JV SUMMARY",
       filename: "jv_summary_excel.xls", // do include extension
       preserveColors: false // set to true if you want background colors and font colors preserved
     });
})

表格生成PHP代码:

<?php if(!isset($_GET['summary'])) {
            foreach($newArr as $arr){
                if(array_keys(array_values($arr)[0])[0] =="GL ACCOUNT" || array_keys(array_values($arr)[0])[0] == "COST CENTER") continue;
                ?>
                <tr class="<?=array_keys(array_values($arr)[0])[0] == "A/P - KLASSIC" ? "end" : ""?>">
                    <td><?=explode('_',array_keys($arr)[0])[0]?></td> <!-- DEPARTMENT -->
                    <td><?=$gl_accounts[array_keys(array_values($arr)[0])[0]]?></td> <!-- GL ACCOUNT NUMBERS -->
                    <td><?=array_keys(array_values($arr)[0])[0]?></td> <!-- GL ACCOUNT NAMES -->
                    <td><?=$cost_centers[explode('_',array_keys($arr)[0])[0]]?></td> <!-- COST CENTER -->
                    <td><?=$profit_centers[explode('_',array_keys($arr)[0])[0]]?></td> <!-- PROFIT CENTER (P90-SOMETHING) -->
                    <td><?=number_format((array_values(array_values($arr)[0])[0] * 0.32),2)?></td>
                    <td><?=number_format((array_values(array_values($arr)[0])[0] * 0.20),2)?></td>
                    <td><?=number_format((array_values(array_values($arr)[0])[0] * 0.20),2)?></td>
                    <td><?=number_format((array_values(array_values($arr)[0])[0] * 0.26),2)?></td>
                    <td><?=number_format((array_values(array_values($arr)[0])[0] * 0.02),2)?></td>
                </tr>
            <?php }} ?>

问题截图:导出Excel中的异常代码


解决方案

1. 移除表格中的HTML注释

你的PHP代码里的<td>标签后带有HTML注释(比如<!-- DEPARTMENT -->),table2excel在抓取表格内容时会将这些注释一并包含,最终出现在导出的Excel文件中。

修改PHP代码,删除所有<td>后面的注释:

<?php if(!isset($_GET['summary'])) {
            foreach($newArr as $arr){
                if(array_keys(array_values($arr)[0])[0] =="GL ACCOUNT" || array_keys(array_values($arr)[0])[0] == "COST CENTER") continue;
                ?>
                <tr class="<?=array_keys(array_values($arr)[0])[0] == "A/P - KLASSIC" ? "end" : ""?>">
                    <td><?=explode('_',array_keys($arr)[0])[0]?></td>
                    <td><?=$gl_accounts[array_keys(array_values($arr)[0])[0]]?></td>
                    <td><?=array_keys(array_values($arr)[0])[0]?></td>
                    <td><?=$cost_centers[explode('_',array_keys($arr)[0])[0]]?></td>
                    <td><?=$profit_centers[explode('_',array_keys($arr)[0])[0]]?></td>
                    <td><?=number_format((array_values(array_values($arr)[0])[0] * 0.32),2)?></td>
                    <td><?=number_format((array_values(array_values($arr)[0])[0] * 0.20),2)?></td>
                    <td><?=number_format((array_values(array_values($arr)[0])[0] * 0.20),2)?></td>
                    <td><?=number_format((array_values(array_values($arr)[0])[0] * 0.26),2)?></td>
                    <td><?=number_format((array_values(array_values($arr)[0])[0] * 0.02),2)?></td>
                </tr>
            <?php }} ?>

2. 提前过滤表格内的注释节点

如果不想修改HTML结构,可以在导出前通过JS移除表格中的注释节点:

$('#to_excel').click(function(e){
    e.preventDefault()
    // 移除表格内所有注释节点
    $("#jv_table").find("td, tr, th").contents().filter(function() {
        return this.nodeType === 8; // 匹配注释节点类型
    }).remove();
    
    $("#jv_table").table2excel({
       name: "JV SUMMARY",
       filename: "jv_summary_excel.xls",
       preserveColors: false
     });
})

3. 排查表格内的隐藏元素

检查网页中是否有隐藏的<script>、<style>或其他代码元素嵌套在表格内部(比如通过display:none隐藏),table2excel会抓取表格内的所有元素,包括隐藏内容。如果存在这类元素,需要将它们移出表格容器。

4. 更换更可靠的导出库

如果上述方法无效,可以考虑替换为SheetJS(xlsx)这类更成熟的表格导出库,它对HTML表格的解析更精准,能有效避免异常内容导出的问题。


内容的提问来源于stack exchange,提问作者user22249320

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 15:23:27