如题。
比如说,我现在想将 跨境电商综合税说明 里的表格转换成 org-mode 格式。
不知道有什么快速的方法呢?
粘贴到类似 Typora 等应用里面,然后 pandoc md → org?
选中网页表格复制,粘贴到 Emacs 中,然后有两种方法:
org-mode
下选中表格,然后 C-c |
。M-x
table-capture
,输入表格分隔符、宽度等参数,可以转换为 table.el
的表格,在 org-mode
下,光标移动至转换后的表格中用 C-~
将 table.el
的表格转换为 org-mode
的表格,最后 C-c C-c
格式化。谢谢,我试一下
我实验出一个解决方法:
首先,定位问题,「跨境电商综合税说明」里的税率表格,复制到 org-mode 里,最大的问题,所有数据都变成一列文本。这导致无法直接用 C-c | 直接切换成 org-mode 里的表格。
然后我参考了一个视频 Org-mode - copy paste tables - YouTube
按照视频里的演示,我发现,只要网页上的表格内容, 复制到 org-mode 时,可以呈现这样的样式,就可以按下 C-c | 来自动转换成 org-mode 的表格格式。
由于,我找到一个 Chrome 插件叫 Table Capture 。它能够自动识别网页上的表格,在复制内容时,直接能整理成 Excel 的格式。
然后,然后我将 Table Capture 复制的表格内容,复制到 org-mode 文件里,按下 C-c | 顺利地将内容整理成 org-mode 里的 table 格式。然后稍微整理了一下,效果如下图。
表格内文字不对齐,主要是因为我没用等宽等高字体。另外,加载 valign-mode 来整理似乎也不成功。但这是与本帖无关的另外的一个话题了。
【更新】后来启用了 cnfonts,解决了表格不对齐的问题。
目测 js 解析一下 table 内容就可以。
只是不太确定在 org 里 像食品,化妆品,这些大类要怎么处理
哦,超出了我的技能点,非程序员。还是感谢你的建议。
写了一小段代码, 在浏览器的 console 里执行,复制出来粘贴在 emacs 中就可以,只针对这个表格。另外,也没有处理表头, 因为这个页面的 table header 其实有错误,但是又在 HTML 的容错范围之内,就没有花力气去适配。
var { result } = Array.from(document.querySelector("table").querySelectorAll("tbody > tr")).slice(2).reduce((a, c) => {
const row = Array.from(c.querySelectorAll("td")).map(i => i.querySelector("p > span").textContent.trim());
const firstTd = c.children[0];
const rowspan = +firstTd.getAttribute("rowspan") - 1;
if (rowspan > 0) {
a.result += "|" + row.join("|") + "|\n";
a.spanText = firstTd.textContent.trim() + "|";
a.spanCounter = rowspan;
} else if (a.spanCounter) {
a.result += "|" + a.spanText + row.join("|") + "|\n";
a.spanCounter -= 1;
} else {
a.result += "|" + row.join("|") + "|\n";
}
return a;
}, {spanText: "", spanCounter: 0, result: ""});
console.log(result);
给你点赞,谢谢
2023年回答,用chatgpt和claude这类工具可以直接要求它生成org-mode格式的表格