一个老后端维护的纯前端项目:表格转换工具

2023-01-12 11:30:26 +08:00
 Fechin

距离上一次在 V 站发的贴子,已过去将近三年,后端成了老后端,开发的纯前端项目 tableconvert.com 还在继续维护,并且新增了一些花里胡哨的功能。

作为一个后端程序员,有不少处理数据的小需求,比如:

实现这些需求的方式多种多样,可以用命令、脚本或正则替换,程序员肯定不会一条条手敲。我把这些需求塞到了表格转换工具的 Magic 转换器,我几乎每天都会用到它,这也是持续维护它的原因。

Magic 转换器传送门: https://tableconvert.com/excel-to-magic

Magic 转换器是什么?

TableConvert 表格转换工具一共有 28 种转换器,Magic 转换器是其中之一,也是我最常用的转换器,它内置了像 awk 命令一样的指令,用户可以根据这些指令设计自己期望的规则数据。Magic 转换器支持的语法指令有:

语法指令描述支持哪些 JS 方法
{h1} {h2} ...1th, 2th ... field of heading, Aka {hA} {hB} ...String methods
{$1} {$2} ...1th, 2th ... field of current row, Aka {$A} {$B} ...String methods
{F,} {F;}Split the current row by the string after F
{NR} {NR+100}Line Number of current Row from 1 or 100
{ENR}End line Number of Rows
{$0}All Fields of current rowArray methods
{NF}Number of Fields
{x ...}Execute JavaScript code, eg: {x new Date()}
{...\}Use backslash \ to output braces {...}

Magic 转换器能做什么?

1. 批量给指定列添加双引号( Built-in Magic )

Row Magic:

"{$1}"{x if(NR<ENR)", "}

生成效果:

"Markdown", "Magic", "LaTeX", "SQL", "HTML", "CSV", "Excel", "JSON", "JSONLines", "ASCII", "MediaWiki", "AsciiDoc", "Qlik", "DAX", "Firebase", "YAML", "XML", "Jira", "Textile", "reStructuredText", "PHP", "Ruby", "ASP", "ActionScript", "TracWiki", "BBCode", "PDF", "JPEG"

2. 生成按第一列作为 WHERE 条件修改第二列的 UPDATE SQL ( Built-in Magic )

Row Magic:

UPDATE user set name ='{$2}' WHERE id='{$1}';`

生成效果:

UPDATE user set name ='Roberta' WHERE id='1';
UPDATE user set name ='Oliver' WHERE id='2';
UPDATE user set name ='Shayna' WHERE id='3';
...

3. 批量生成创建相同规则内容的文件命令( Built-in Magic )

Row Magic:

echo "title: File {$2} 
date: {x new Date().getTime()}
" > docs/{$2}.md

生成效果:

echo "title: File name 
date: 1673493211739
" > docs/name.md

echo "title: File Roberta 
date: 1673493211739
" > docs/Roberta.md
...

4. 批量替换文件名( Built-in Magic )

Row Magic:

mv {$2} {$2.replace('e', 'E')}-generator.json`

生成效果:

mv name namE-generator.json
mv Roberta RobErta-generator.json
mv Oliver OlivEr-generator.json
...

还能玩儿出什么花来?篇幅有限,就不一一列举了。V 友有常用的 Magic 模板,可以在评论区留言,我会它按使用频率整理并添加到 Built-in Magic 中。

公司要倒闭了,没啥事儿,这次有时间对 Magic 转换区进行升级,分享给大家,各位轻喷,谢谢!

7381 次点击
所在节点    分享创造
61 条回复
zx9481
2023-01-16 17:48:39 +08:00
@zx9481 找到了 右下角可以切换
Fechin
2023-01-17 10:39:14 +08:00
@lqzhgood 已修复,感谢反馈 https://tableconvert.com/json-to-markdown?data=[{a:1,b:2},%20{b:9999,a:444}]
lqzhgood
2023-01-17 10:45:40 +08:00
lqzhgood
2023-01-17 10:46:34 +08:00
@lqzhgood https://tableconvert.com/json-to-markdown?data=[{a:1,b:2},%20{b:9999,c:123},{d:999},{e:123}]
lqzhgood
2023-01-17 10:58:36 +08:00
不知道这个算不算 bug ,毕竟大部分导出的数据都比较”规整“
对于这个”bug“,可能还需要用户提供一个 空值 的 默认值 选项~
Fechin
2023-01-17 11:43:57 +08:00
@lqzhgood 我觉得算,虽然极少出现,但是数据丢失的体验不友好。

我修改了一下,保证 header 顺序的同时去重,平铺所有数据,没有值则为空: https://tableconvert.com/json-to-markdown?data=%5B%7Ba%3A1%2Cb%3A2%7D%2C%7Bb%3A9999%2Cc%3A123%7D%2C%7Bd%3A999%7D%2C%7Be%3A123%7D%5D
OSong
2023-01-17 14:44:33 +08:00
@sarices 其实右下方可以改为简体中文 哈哈哈
hanswu
2023-01-17 15:31:46 +08:00
给大佬点个赞,最近在百度搜才用到这个,真心好用!
sarices
2023-01-17 15:44:15 +08:00
@OSong 应该放到顶部,估计没多少人会拉到底部,基本工功能就在上面可以完成了
wangwei216
2023-01-17 17:15:46 +08:00
牛皮,我前几天还用到了这个,这个还是很有用的,鼓励
lovedoing
2023-01-17 17:42:22 +08:00
表头魔法为空,第一行还是被忽略了
lscho
2023-01-17 18:50:08 +08:00
牛逼,以前都是自己写脚本实现,没想到做个通用的工具
Fechin
2023-01-17 18:51:46 +08:00
@lovedoing 有空格或换行符,也会当做魔法,想要保留表头,需要清空 textarea 文本框
Fechin
2023-01-17 18:52:38 +08:00
@lscho 我也是亏了好多脚本 :)
manito2
2023-01-18 00:09:07 +08:00
厉害,非常实用。
bshu
2023-01-18 10:02:45 +08:00
好东西,很实用
yuhuanxi
2023-01-18 10:07:50 +08:00
已加入到个人主页工具链接,试用了下很给力
Fechin
2023-01-18 10:17:26 +08:00
@yuhuanxi 谢谢支持
imzhoukunqiang
2023-01-19 14:59:11 +08:00
@Fechin 大佬,项目开源吗
Fechin
2023-01-20 09:43:35 +08:00
@imzhoukunqiang 代码太拉了,近期没有开源的计划

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/908380

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX