hucre 表格导出 HTML/Markdown 与 HTML 表格爬取实战:双向流动指南

发布时间:2026/10/7 8:10:26

hucre 表格导出 HTML/Markdown 与 HTML 表格爬取实战:双向流动指南 hucre 表格导出 HTML/Markdown 与 HTML 表格爬取实战双向流动指南【免费下载链接】hucreZero-dependency spreadsheet engine. Read write XLSX, CSV, ODS. Pure TypeScript, works everywhere.项目地址: https://gitcode.com/gh_mirrors/hu/hucrehucre 是一个零依赖的纯 TypeScript 电子表格引擎除了读写 XLSX、CSV、ODS 之外还提供了一套轻量的文本格式互转能力toHtml与toMarkdown能把工作表一键导出为网页表格或 Markdown 表格fromHtml则能反向解析任意网页里的 HTML 表格为结构化工作表——让表格数据在 Excel 与网页之间双向流动是报表发布与数据抓取的实用组合拳。一分钟了解 hucrehucre 的核心卖点是「零依赖 全格式」零依赖没有 npm 依赖树ESM 原生可直接跑在 Node、Deno、Bun、Cloudflare Workers 和浏览器里读多格式XLSX / ODS / CSV / JSON / XML / XLS / XLSBread()自动嗅探写多格式XLSX / ODS / CSV / TSV / JSON / NDJSON / XML /HTML / Markdown可摇树Tree Shaking只导入用到的部分CSV 模块 gzip 后约 3.7 KB。安装只需一行npm install hucre本文聚焦四个函数toHtml、toMarkdown、fromHtml以及 CLI 的convert命令。它们都从包入口直接导出也可以按需从 src/export/index.ts 对应子模块导入。从工作表导出 HTML带样式、深色模式与无障碍toHtml把一个 Sheet 渲染成标准table默认输出干净、可直接嵌进任何网页import { readXlsx, toHtml } from hucre const wb await readXlsx(fileBuffer) const html toHtml(wb.sheets[0], { hasHeaderRow: true, // 首行渲染为 thead styles: true, // 单元格内联 CSS字体、填充、边框、对齐 classes: true, // 按类型加 hucre-num / hucre-bool / hucre-date 类 })几个默认关闭但很有用的开关完整定义见 HtmlExportOptions选项默认作用hasHeaderRowfalse首行输出为th scopecolstylesfalse把单元格样式转成内联style粗体、背景色、边框等includeStyleTagfalse附带一段响应式style自动适配深色模式caption—输出caption表格标题ariaLabel—给表格加aria-label方便读屏软件细节上它处理了不少容易翻车的点单元格内容会做 HTML 实体转义 防注入合并单元格自动转成colspan/rowspan见 buildMergeMap日期统一输出为YYYY-MM-DD。一个典型场景把月度报表直接嵌入邮件或内部门户加上includeStyleTag: true就能拿到自带深色模式样式的完整表格不用手写一行 CSS。从工作表导出 Markdown自动对齐与转义toMarkdown输出标准 GFM 表格数字列自动右对齐、字符串列左对齐import { toMarkdown } from hucre const md toMarkdown(wb.sheets[0]) // | Name | Price | Stock | // |--------|-------:|------:| // | Widget | 9.99 | 142 |值得了解的行为实现见 src/export/markdown.ts自动对齐扫描每列首个非空值数字列输出---:右对齐分隔符也可用alignment显式指定转义保护单元格里的*、_、、[等内联语法字符会被转义*not emphasis*就是字面文本管道符|与换行符无条件转义换行变成br保证表格结构不碎宽度截断超过maxWidth默认 50 字符的单元格会被截断加...。⚠️Markdown 是展示输出不是数据交换格式。截断和br都是单向的hucre 也没有fromMarkdown——官方明确不会加。需要数据保真时请用 CSV 或 JSON 做中转。如果你的某列本来就含想被渲染的 Markdown比如一列**加粗**标签传escapeInline: false即可。反向爬取fromHtml 解析任意网页表格fromHtml把 HTML 表格字符串解析成一个Sheet——注意是任何人的表格不限于 hucre 自己导出的import { fromHtml, writeXlsx } from hucre const sheet fromHtml(scrapedHtml, { sheetName: Scraped, typeInference: true, // 从文本推断数字、布尔、ISO 日期 }) const xlsx await writeXlsx({ sheets: [sheet] }) // 抓完直接落盘它对真实网页的「脏数据」相当宽容类型推断td42/td读回为数字42007默认保留为字符串保护前导零实体与换行nbsp;、mdash;等命名实体会解码br变成单元格内换行结构还原colspan/rowspan还原为合并单元格tfoot无论声明在何处都会落到表格底部与浏览器渲染一致caption写入sheet.a11y.summarythead行写入sheet.a11y.headerRow脚本隔离script/style内容整体跳过不会被误当成单元格文本优雅降级遇到未闭合注释、截断标签等无法完成的标记时解析停止在出错处并返回已读到的行而不是抛错丢掉整张表。多表格页面默认读取第一个table传tableIndex: 1可指定读取第 N 个。注意fromHtml 不是 toHtml 的逆函数HTML 导出面向「展示」回读时样式信息不会恢复官方给出了明确对照toHtml写入fromHtml读取colspan/rowspan✅ 还原为sheet.mergesthead或整行th✅sheet.a11y.headerRowcaption✅sheet.a11y.summaryhucre-num等类型类✅ 还原单元格类型内联style、style块❌ 不读取role/aria-label❌ 不读取另有两个小不对称回读时单元格文本会被 trimtd周围的空白视为缩进日期在导出时已丢掉了时分秒。如果你要把抓回来的 Sheet 再导出为 HTML可以把两个无障碍提示传回去round-trip 示例toHtml(sheet, { hasHeaderRow: sheet.a11y?.headerRow 0, caption: sheet.a11y?.summary, })不想写代码CLI convert 命令一步转换hucre 附带命令行工具convert子命令支持在 XLSX、ODS、CSV、TSV、JSON、NDJSON、XML、HTML、Markdown 之间按扩展名互相转换实现见 src/cli/commands.ts# 网页表格 → Excel hucre convert in.html out.xlsx # Excel 报表 → Markdown贴进文档 / Issue / 周报 hucre convert report.xlsx report.md # 管道用法stdin 进、stdout 出 cat data.csv | hucre convert - - --to html两点提醒文本格式转换只携带单元格值样式、图表等不迁移这是convert的设计约定写到 stdout 时必须用--to显式指明格式避免往终端喷二进制。另外.xls/.xlsb在 CLI 中是只读格式可作转换的输入但不能作输出。实战清单双向流动怎么做才稳发布报表到网页toHtml(sheet, { hasHeaderRow: true, styles: true, includeStyleTag: true })一个调用拿到自适应深色模式的完整表格往文档里贴表格toMarkdown自动对齐、自动转义放心贴进支持 GFM 的渲染器抓取网页表格fromHtml拿到结构化 Sheet 后writeXlsx落盘或直接write({ format: json })转 JSON 入库数据交换别用 Markdown展示用 Markdown流转用 CSV / JSON——这是官方定下的边界超大文件配合streamXlsxRows流式读取再逐行喂给导出函数内存恒定不随行数增长。小结hucre 用三个函数补齐了表格数据的「最后一公里」toHtml负责带样式地上架toMarkdown负责进文档fromHtml负责把散落在网页里的表格变回结构化数据CLI 的convert则把整条链路压缩成一条命令。零依赖、纯 TypeScript 的它可以在服务端、边缘函数甚至浏览器里跑同一份逻辑——对于「表格数据双向流动」这类需求这就是完整、简单且开箱即用的答案。更多接口速查可参考 README 的 API 总表规格覆盖情况见 docs/SPEC-COVERAGE.md。【免费下载链接】hucreZero-dependency spreadsheet engine. Read write XLSX, CSV, ODS. Pure TypeScript, works everywhere.项目地址: https://gitcode.com/gh_mirrors/hu/hucre创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/7 8:10:26

蓝牙耳机哪个性价比高?2026十大高性价比蓝牙耳机推荐

​蓝牙耳机哪个性价比高?相比过去更加注重音质的耳机市场,如今用户开始关注佩戴是否轻松、使用是否方便。开放式耳机正是顺应这一趋势出现的产品类型。不过不同品牌对于产品定位有所区别,最终体验也各有不同。本次我们测试了2026十大高性价比…

2026/10/7 8:05:26

HarmonyOS 7 fflate:离线模型包路径穿越拦截与原子回滚

一、导入成功之后,模型目录里多了一份不该出现的文件 ModelVault 原本只是内部验收用的 3D 场景包导入器:用户选择 room_v7.gsbox,应用解压模型、校验清单,再把目录切换为当前版本。测试包只有 82.4 MB,第一次接入 ffl…

2026/10/7 8:45:28

Redhawk-SC输入件配置:构建芯片供电数字孪生体的核心实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 8:45:28

AI工业控制系统搭建指南:架构决策、选型与工程化落地

1. 从"AI工业控制系统"这个词说起:它到底在解决什么问题先把概念掰开。工业控制系统,也就是常说的ICS,核心职责是把传感器采集到的温度、压力、流量、位置这些物理量读进来,经过逻辑判断,再输出控制指令给执…

2026/10/7 8:45:28

从能聊到能办:Agent-Reach打通大模型工具调用最后一公里

最近我一直在鼓捣一个叫 Agent-Reach 的项目,说实话这个名字一开始就是我随手敲出来的代号,后来越做越觉得贴切——Reach,够得着。现在圈子里做个 Agent demo 很容易:让大模型接上对话窗口,能写诗、能编故事、能给你规…

2026/10/7 8:45:28

从连接到观测:Agent-Reach如何构建大模型智能体的触达层

“Agent-Reach”这个名字,我第一次看到是在一个技术社群的讨论帖里。当时大家正为一个老大难问题吵得不可开交——LLM(大语言模型)驱动的智能体在真实业务场景里,如何稳定地触达各种外部系统和工具,而不是像个没头苍蝇…

2026/10/7 8:45:28

Java银行排号系统源码解析:从通信模型到并发取号实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/7 8:18:33

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/6 17:46:51

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

ESP32免重刷固件:浏览器直接修改NVS键值实现WiFi配置更新

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

SAP HANA查询结果导出CSV:避开乱码、性能与权限的实用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

数字后端Placement阶段Density与Congestion控制实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑