今天10月24号,程序员日,特此写篇文章记住一下。
一直以来不太喜欢OFFICE,太笨重了,也搜索不了。
一般的文档用MARKDOWN就可以解决了。
可是如果涉及EXCEL的计算,也能不能用文本实现呢?
当然有,并且比EXCEL更加强大,因为我们可以调用LISP函数!
它是谁? 它是强大的emacs org-mode!
org-mode写文档比markdown也更加强大,gitlab跟github也都支持。
写文档的活太简单,markdown能干。
org-mode还可以轻松导出markdown, 还附送html, pdf, odf...
但是,org-mode有更崇高的理想,它不会满足于现状的。
它有更强大的杀手锏: 项目管理 + 表格计算!
项目管理方面文档比较多,这篇主要介绍表格计算功能!
打开CSV文件
常用编辑功能
- 添 加水平分隔线
- 移动大法
- 交换大法
- 删除大法
- 插入大法
选择计算
调用公式
- 公式范围选择
- 填写公式
- 函数调用
- 范围计算
排序及过滤
高级功能
- LOOKUP函数
- 画图
- 日期处理
一. emacs打开CSV文件
[larluo@nixos-larluo:~/my-tmp]$ emacs -nw data.csv
输入alt+x, org-mode回车切换到org-mode
全选之后输入control+c, |键转换成表格
二. 常用编辑功能
a. 添加水平分隔线
在第一行标题,输入[Control+C, -]即可
b. 移动大法
移动至下面单元:下方向键 或Enter(自动创建新行)
移动至上面单元: 上方向键
移动至右边单元:Tab
移动至左边单元: Shift+Tab
移动至单元内容开始: Alt+a
移动至单元内容结束: Alt+e
c. 交换大法
左右行交换: Alt+左右方向键
上下行交换:Alt+上下方向键
d. 删除大法
清空当前单元: Control+C, 空格
删除当前列: Alt + Shift + 左方向键
删除当前行: Alt + Shift + 向上方向键
e. 插入大法
列前插入: Alt + Shift + 右方向键
列尾插入: 输入内容后,[Control+C,Control+C]刷新表格即可
行前插入: Alt + Shift + 下方向
行尾插入: Enter
三. 选择计算
通过矩阵选择需要计算的块,[Control+C, +]进行求和计算,底部显示结果
四. 调用公式
1. 公式范围选择
@表示行,$表示列, @3$2表示第3行第2列单元,也可以使用B3表示
a. 打开窗格线
输入[Control+C, }]显示窗格线
b. 查询单元格
在单元格内可输入[Control+C, ?]查看单元格位置,结果显示底部
2. 填写公式
在单元格内填写公式,或者直接在表格底部编写公式即可
a. 使用单元格输入公式
在单元格内办理入:=后,填写公式内容
按着键入[Control+C, Control+C]刷新表格数据。
公式将自动生成到表格下方,当前单元格数据亦被计算出来
b. 直接在表格底部输入
在第一列前新增一列,在底部输入公式:
#+TBLFM: $1=#@-1
接着键入[Control+C, Control+C]刷新公式
3. 函数调用
函数调用分为两种方式: emacs calc模块函数以及elisp函数
a. emacs calc模块
参考文档:
- https://orgmode.org/manual/Formula-syntax-for-Calc.html#Formula-syntax-for-Calc
- https://www.gnu.org/software/emacs/manual/html_mono/calc.html
这里我们使用calc函数
新增一列后,调用calc函数计算平均值
在表格下方编写公式: #+TBLFM: $7=vmean($4,$5,$6)
键入Control+C, Control+C刷新即可
b. elisp 函数
这里我们使用elisp函数
新增一列后,调用calc函数计算三门科的总分
在表格下方编写公式:: #+TBLFM: $8='(+ $4 $5 $6);N
4. 范围计算
键入公式: #+TBLFM: @3$9..@4$9=vsum(@2$4..@4$6)
键入Control+C, Control+C刷新即可
5. 排序及过滤
a. 单字段排序
这里对数学成绩进行排序
选择任一数学成绩单元格后键入[Control+C, ^]后,
按N进行数值模式从大到小排序
b. 多字段排序
需要编写代码,后续进行补充。。。
六. 高级功能
后续整理出来
a. LOOKUP函数
https://orgmode.org/manual/Lookup-functions.html#Lookup-functions
b. 画图
https://orgmode.org/manual/Org_002dPlot.html#Org_002dPlot
c.日期处理
https://orgmode.org/manual/Durations-and-time-values.html#Durations-and-time-values