table_to_sheet() 提取不到内容是因为它只读取 / 的 innertext,不解析 html 标签或样式;常见原因包括嵌套非表格元素、colspan/rowspan 错位、dom 未渲染完成、交互元素导致 innertext 为空。

直接用 这个函数不解析 HTML 标签或样式,只读 避免打开文件后全是空白或单列堆叠: 默认 诊断并修复涉及公式、命名范围、Power Query 刷新、数据透视表、VBA/宏保存等问题的 Microsoft Excel XLSX 工作簿 真正容易被忽略的点是:表格结构是否“被框架污染”。React/Vue 组件渲染后,XLSX.utils.table_to_sheet() 提取最稳,但前提是 DOM 中的 <table> 结构干净、语义正确;否则会漏数据或错行。
<h3>为什么 <code>table_to_sheet() 有时提取不到内容?
<td>/<code><th> 的 <code>innerText。常见失效场景:
<table> 里嵌了 <code><div> 或 <code><span></span> 包裹文本(比如 Vue 渲染后残留的 wrapper 元素)
colspan/rowspan 但 <tr> 行数不匹配,导致内部单元格映射错位
<li>表格是 JS 动态生成的,调用时 DOM 还没渲染完成(<code>document.getElementById('my-table') 返回 null)<button></button>、<input> 等可交互元素,innerText 取到的是空字符串导出 Excel 前必须检查的三件事
<table>,没有 <code><table> 套 <code><table><li>用浏览器开发者工具手动展开 <code><tbody>,看每行 <code><tr> 下的 <code><td> 数量是否一致(尤其注意分页/折叠区域是否被移除)
<li>中文表头必须在导出前确保原始 HTML 字符编码为 UTF-8;若用 <code>data: 方式,需在拼接字符串开头加 <meta charset="UTF-8">
大数据量(>3000 行)导出卡顿怎么办?
table_to_sheet() 会尝试解析公式和格式,触发大量 DOM 属性遍历。实测中关闭解析能提速 3–5 倍:
{raw: true, cellFormula: false, cellHTML: false} 参数XLSX.writeFile(wb, 'x.xlsx') 直接下载大文件,改用 XLSX.write(wb, {type: 'array', bookType: 'xlsx'}) 获取 Uint8Array,再转 Blob 下载table.outerHTML 发给后端,用 pandas.read_html() + openpyxl 处理<td> 可能被包裹在自定义标签里,或文本被塞进 <code>textContent 而非 innerText ——这时得先用 querySelectorAll('td, th') 手动采集,再构造二维数组喂给 XLSX.utils.aoa_to_sheet()。










