如何将多个 HTML 表格合并导出为单个 Excel(CSV)文件

千静酱_5675

千静酱_5675

2026-10-06

487人浏览

原创

如何将多个 HTML 表格合并导出为单个 Excel(CSV)文件

本文提供一段开箱即用的 javascript 脚本,可自动收集页面中所有具有相同结构的 html 表格,合并其内容(含表头),并导出为标准 csv 文件,兼容 excel、google sheets 等主流表格软件。

本文提供一段开箱即用的 javascript 脚本,可自动收集页面中所有具有相同结构的 html 表格,合并其内容(含表头),并导出为标准 csv 文件,兼容 excel、google sheets 等主流表格软件。

在企业内网(如 Tridion 环境)中,常需通过纯前端方式将多个 HTML 表格导出为统一报表。原方案仅支持按 ID 导出单个表格,而实际业务中往往存在多个部门/模块的平行表格(如 Dept1、Dept2、Dept3),亟需合并导出。直接生成 .xls 文件依赖浏览器兼容性(如 IE 的 msSaveOrOpenBlob),且易因 HTML 标签嵌套、特殊字符导致 Excel 解析异常。更可靠、轻量、跨平台的方案是导出为 CSV(Comma-Separated Values) ——它本质是纯文本格式,Excel 双击即可打开,支持百万行数据,且无样式干扰,兼容性极佳。

以下脚本可一键导出页面中全部 <table> 元素(自动跳过无关表格,如导航栏),智能合并:首张表的 <code><thead> 作为最终 CSV 的表头,其余表格仅提取 <code><tbody> 中的行数据,确保结构统一、语义清晰。<h3>✅ 完整可用代码(复制即用)</h3> <pre class="brush:php;toolbar:false;">&lt;button type=&quot;button&quot; onclick=&quot;exportAllTablesToCSV()&quot;&gt;下载所有表格为 CSV&lt;/button&gt; &lt;script&gt; function exportAllTablesToCSV() { // 1. 收集所有 table 元素(排除可能的非数据表格,如布局用 table) const tables = document.querySelectorAll('table[summary=&quot;Contacts&quot;]'); if (tables.length === 0) { alert('未找到符合条件的表格(summary=&quot;Contacts&quot;)'); return; } let csvLines = []; let headerWritten = false; // 2. 遍历每个表格 tables.forEach((table, tableIndex) =&gt; { const rows = table.querySelectorAll('tr'); rows.forEach(row =&gt; { const cells = row.querySelectorAll('td, th'); if (cells.length === 0) return; // 提取每单元格纯文本(避免HTML标签、换行、多余空格影响CSV) const cellValues = Array.from(cells).map(cell =&gt; { // 移除HTML标签,保留换行符(CSV中换行需加引号) let text = cell.textContent || cell.innerText || ''; // 用双引号包裹含逗号、换行或引号的内容(标准CSV转义) if (/[,\&quot;\n\r]/.test(text)) { text = `&quot;${text.replace(/&quot;/g, '&quot;&quot;')}&quot;`; } return text; }); // 仅对第一张表取一次表头(thead中的th),后续表格跳过表头 if (tableIndex === 0 &amp;&amp; row.querySelector('th')) { if (!headerWritten) { csvLines.push(cellValues.join(',')); headerWritten = true; } } else if (row.querySelector('td')) { // 仅导出数据行(含td的tr),忽略空行或纯th行 csvLines.push(cellValues.join(',')); } }); }); if (csvLines.length === 0) { alert('未提取到有效数据行,请检查表格结构'); return; } // 3. 生成并触发下载 const csvContent = '\uFEFF' + csvLines.join('\n'); // \uFEFF 为UTF-8 BOM,确保中文不乱码 const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' }); const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.download = 'AllDepartments.csv'; link.style.display = 'none'; document.body.appendChild(link); link.click(); document.body.removeChild(link); URL.revokeObjectURL(url); // 清理内存 } &lt;/script&gt;</pre> <h3>? 使用说明与注意事项</h3> <ul> <li> <strong>精准匹配表格</strong>:脚本通过 <code>document.querySelectorAll('table[summary="Contacts"]') 定位所有目标表格(与你的 HTML 中 summary="Contacts" 属性一致),避免误导导航栏等无关表格。如需适配其他标识,可改为 table.class-name 或 table[id^="Dept"](匹配 Dept1/Dept2 等)。

  • 智能表头处理:仅使用第一张表格的 <thead> 作为 CSV 表头,其余表格只导出 <code><tbody> 数据行,杜绝重复表头污染数据。<li> <strong>安全转义</strong>:自动检测单元格内容是否含逗号(<code>,)、双引号(")或换行符,并按 RFC 4180 标准用双引号包裹,内部双引号转义为 "",确保 Excel 正确解析。
  • 中文兼容:添加 UTF-8 BOM(\uFEFF)前缀,防止 Windows Excel 打开中文 CSV 时出现乱码。
  • Tridion 集成提示:将上述 <button></button> 和 <script></script> 整块代码粘贴至 Tridion 的「Code Block」组件中即可生效,无需额外配置;按钮样式可通过 CSS 覆盖优化。
  • ? 为什么推荐 CSV 而非 XLS?

    Wechat HTML Publisher
    Wechat HTML Publisher

    直接上传HTML富文本到微信公众号草稿箱。支持完整的HTML格式,无需Markdown转换。

    下载
    • ✅ 零依赖:不依赖 ActiveX、Office COM 或第三方库;
    • ✅ 极简可靠:无 HTML 标签解析风险,无样式/合并单元格兼容问题;
    • ✅ 兼容性无敌:Windows/macOS/Linux 下 Excel、Numbers、LibreOffice、Google Sheets 均原生支持;
    • ✅ 易于扩展:后续如需生成多工作表(Sheet),可升级为使用 SheetJS (xlsx.js) 库,但当前场景 CSV 已完全满足需求。

    只需一次点击,所有部门表格即刻合并为结构清晰、开箱即用的 CSV 报表——简洁、健壮、面向生产环境。

    前端入门到VUE实战笔记:立即使用
    在学习笔记中,你将探索 前端 的入门与实战技巧!

    相关文章

    HTML速学教程(入门课程)
    HTML速学教程(入门课程)

    HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

    下载

    相关标签:

    excel html csv

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    html版权符号
    html版权符号

    html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

    2023.06.14

    5615

    7

    html在线编辑器
    html在线编辑器

    html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

    2023.06.21

    3192

    4

    html网页制作
    html网页制作

    html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

    2023.07.31

    2870

    5

    html空格
    html空格

    html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.01

    2899

    5

    html是什么
    html是什么

    HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

    2023.08.11

    4739

    6

    html字体大小怎么设置
    html字体大小怎么设置

    在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

    2023.08.11

    2841

    3

    html转txt
    html转txt

    html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.31

    2649

    3

    html文本框代码怎么写
    html文本框代码怎么写

    html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

    2023.09.01

    2368

    6

    HTML嵌入CSS样式的方法
    HTML嵌入CSS样式的方法

    HTML嵌入CSS样式的方法有内联样式、内部样式表和外部样式表。本专题为大家提供CSS样式相关的文章、下载、课程内容,供大家免费下载体验。

    2023.09.20

    2388

    5

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Excel 教程
    Excel 教程

    共162课时 | 43.9万人学习

    成为PHP架构师-自制PHP框架
    成为PHP架构师-自制PHP框架

    共28课时 | 3.5万人学习