方法一:直接在浏览器中复制粘贴到Excel
操作要点与适用场景
在快速实现 HTML表格转Excel 的场景中,最简单的办法是直接在浏览器中选中表格并粘贴到 Excel。该方法无需安装额外工具,适合小型、静态的页面表格的初步查看与临时归档。
具体做法是:选中完整表格区域,使用 Ctrl+C 拷贝,然后切换到 Excel 工作簿中按 Ctrl+V 粘贴。若出现格式错位,可以尝试使用 Excel 的粘贴选项,例如“保持源格式”或“仅文本”来调优对齐。
优点是极致的简便与快速,缺点是对包含合并单元格、复杂表头或大量数据的表格支持有限,可能需要后续手动整理。该方法最适合需要即时查看数据时作为第一步。

方法二:前端脚本将 HTML 表格导出为 CSV
实现原理与代码要点
将 HTML 表格直接转换为 CSV 并下载,是 无后端需求的高效方案,CSV 文件可以被 Excel 直接打开,适合简单结构的表格导出与数据整理工作。
核心思路是遍历表格的行和单元格,提取文本内容,按照逗号分隔符拼接行,最后通过 Blob 下载或链接触发下载。实现时需要注意处理 引号、逗号和换行 的转义,以及中文字符的编码。
// 将 HTML 表格转换为 CSV 并下载
function tableToCSV(tableId) {const table = document.getElementById(tableId);const rows = [];table.querySelectorAll('tr').forEach(tr => {const row = [];tr.querySelectorAll('th, td').forEach(cell => {let text = cell.innerText.trim();// 转义包含逗号和引号的文本if (text.includes(',') || text.includes('"') || text.includes('\n')) {text = '"' + text.replace(/"/g, '""') + '"';}row.push(text);});if (row.length) rows.push(row.join(','));});const csv = rows.join('\\n');const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });const url = URL.createObjectURL(blob);const a = document.createElement('a');a.href = url;a.download = 'table.csv';document.body.appendChild(a);a.click();document.body.removeChild(a);
}方法三:前端 SheetJS 将HTML表格导出为 .xlsx
核心步骤与示例代码
SheetJS(xlsx)库提供了强大且便捷的表格导出能力,能够直接将 HTML 表格转换为工作簿并下载为 Excel 文件。无需后端服务,非常适合单页应用和自助导出场景;同时,保留表头和多数单元格格式的能力也比较友好。
在使用前需通过 CDN 引入 SheetJS,然后调用 XLSX.utils.table_to_book 将表格转换为工作簿,最后使用 XLSX.writeFile 下载。
// 使用 SheetJS 将 HTML 表格导出为 Excel
// 1) 引入 SheetJS:
// 2) 代码示例
const table = document.getElementById('myTable');
const wb = XLSX.utils.table_to_book(table, { sheet: 'Sheet1' });
XLSX.writeFile(wb, 'table.xlsx');
方法四:Python 脚本(Pandas)批量从 HTML 导出 Excel
环境搭建与示例代码
Python 的 pandas 库提供了强大且直观的 read_html 接口,能够从 HTML 文件或网页中提取一个或多个表格,随后通过 to_excel 写出 Excel 文件。适用于批量处理与自动化任务,尤其是在需要把多个表格整理到同一工作簿中时表现出色。
实际操作中,先安装相关包,然后读取 HTML 文档中的表格,最后将它们写入不同的工作表中。下面给出一个简洁的示例。
import pandas as pd# 读取本地 HTML 文件中的表格,返回 DataFrame 列表
tables = pd.read_html('data.html') # 也可以传入 URL# 将所有表导出到同一个 Excel 文件的不同工作表
with pd.ExcelWriter('tables.xlsx') as writer:for i, df in enumerate(tables, start=1):df.to_excel(writer, sheet_name=f'Table_{i}', index=False)
方法五:Excel 自带的数据获取功能(From Web / From HTML)
在 Excel 中执行的步骤
Excel 自带的 数据获取与转换(Get & Transform/Power Query)功能,能够直接从网页提取 HTML 表格并进行清洗后加载到工作表中。这是一个无需编程的强大工具,特别适合经常需要从网页更新数据的场景。
操作步骤通常包括:打开 Excel,进入 数据选项卡,选择 获取数据 → From Web,粘贴网页地址或本地 HTML 文件路径,选择需要的表格,再点击 加载,最后可以选择加载到工作表、数据模型或外部连接。
方法六:Node.js 服务端自动化脚本(Cheerio + ExcelJS)
方案概述与代码示例
当需要在服务器端进行批量或自动化的 HTML表格转Excel 时,使用 Node.js 的 Cheerio(用于解析 HTML)与 ExcelJS(用于生成 Excel 文件)是一种高效的解决方案。无需浏览器即可完成批量转换,便于接入数据管道与定时任务。
通过读取本地 HTML 文件,解析表格结构,提取单元格文本,随后将每个表格写入一个独立的工作表,最终输出为 .xlsx 文件。以下代码给出一个完整的实现示例。
const fs = require('fs');
const cheerio = require('cheerio');
const ExcelJS = require('exceljs');async function htmlTableToExcel(htmlPath, outPath) {const html = fs.readFileSync(htmlPath, 'utf8');const $ = cheerio.load(html);const tables = $('table');const wb = new ExcelJS.Workbook();tables.each((idx, table) => {const ws = wb.addWorksheet(`Table${idx + 1}`);const rows = [];$(table).find('tr').each((r, tr) => {const row = [];$(tr).find('td, th').each((c, cell) => {row.push($(cell).text().trim());});if (row.length) rows.push(row);});ws.addRows(rows);});await wb.xlsx.writeFile(outPath);
}// 使用示例
htmlTableToExcel('data.html', 'tables.xlsx').catch(console.error);


