1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
## Every. single. feature. (that csv++ supports)
##
fn foo_fn(a, b, c) a + b * c
# a variable
bar := 42
depends_on_another := 42 * 100
# a function that takes two args and calls another function
fn composite_fn(a, b)
foo_fn(a, b, bar) # a trailing comment
fn my_function()
composite_fn(42, 23)
---
border , ,
,[[border=top]] border=top ,
,[[border=right]] border=right ,
,[[border=bottom]] border=bottom ,
,[[border=left]] border=left ,
,[[border=all]] border=all ,
, ,
borderstyle , ,
,[[border=all/borderstyle=dashed]] border=all/borderstyle=dashed ,
,[[border=all/borderstyle=solid]] border=all/borderstyle=solid ,
, ,
color , ,
,[[color=FF0000]] color=FF0000 ,
,[[color=ABC]] color=ABC ,
, ,
expand , ,
![[expand=3]] , expand=3 ,
, ,
fontcolor , ,
,[[fontcolor=FF0000]] fontcolor=FF0000 ,
,[[fontcolor=ABC]] fontcolor=ABC ,
, ,
fontfamily , ,
,[[fontfamily='Comic Sans Ms']] fontfamily='Comic Sans MS' ,
,[[fontfamily='Helvetica']] fontfamily='Helvetica' ,
, ,
fontsize , ,
,[[fontsize=20]] fontsize=20 ,
,[[fontsize=4]] fontsize=4 ,
, ,
format , ,
,[[format=bold]] format=bold ,
,[[format=italic]] format=italic ,
,[[format=underline]] format=underline ,
,[[format=strikethrough]] format=strikethrough ,
, ,
halign , ,
,[[halign=left]] halign=left ,
,[[halign=center]] halign=center ,
,[[halign=right]] halign=right ,
, ,
note , ,
,[[note='this is a note']] note='this is a note' ,
, ,
numberformat , ,
,[[numberformat=currency]] numberformat=currency ,[[numberformat=currency]]=123456
,[[numberformat=date]] numberformat=date ,[[numberformat=date]]2020-12-12
,[[numberformat=datetime]] numberformat=datetime ,[[numberformat=datetime]]2020-12-12 1:00
,[[numberformat=number]] numberformat=number ,[[numberformat=number]]=123456
,[[numberformat=percent]] numberformat=percent ,[[numberformat=percent]]=1.23456
,[[numberformat=text]] numberformat=text ,[[numberformat=text]]=123456
,[[numberformat=time]] numberformat=time ,[[numberformat=time]]=123456
,[[numberformat=scientific]] numberformat=scientific ,[[numberformat=scientific]]=123456
, ,
validate ,
validate=custom(TRUE) ,[[validate=custom(TRUE)]]TRUE
validate=date_after(2025-09-08) ,[[validate=date_after(2025-09-08)]] 2026-09-07
validate=date_before(2024-10-10) ,[[validate=date_before(2024-10-10)]] 2021-01-01
validate=date_between(2/4/2025 10/20/2026) ,[[validate=date_between(2/4/2025 10/20/2026)]] =1/1/26
validate=date_equal_to(1/2/23) ,[[validate=date_equal_to(1/2/23)]] =1/2/23
validate=in_list(1 2 3 foo) ,[[validate=in_list(1 2 3 foo)]] =1
validate=in_range(A1) ,[[validate=in_range(A1)]] border
validate=date_is_valid ,[[validate=date_is_valid]] 2026-01-01
validate=is_valid_email ,[[validate=is_valid_email]] test@test.com
validate=is_valid_url ,[[validate=is_valid_url]] http://test.com
validate=date_not_between(4/5/2022 2022-05-04) ,[[validate=date_not_between(4/5/2022 2022-05-04)]] 04/25/2022
validate=date_on_or_after(1/2/23) ,[[validate=date_on_or_after(1/2/23)]] 1/2/2023
validate=date_on_or_before(11/2/24) ,[[validate=date_on_or_before(11/2/24)]] 11/2/2022
validate=number_between(5 10) ,[[validate=number_between(5 10)]] =8
validate=number_equal_to(5) ,[[validate=number_equal_to(5)]] =5
validate=number_greater_than(21) ,[[validate=number_greater_than(21)]] =22
validate=number_greater_than_or_equal_to(23) ,[[validate=number_greater_than_or_equal_to(23)]] =24
validate=number_less_than(23) ,[[validate=number_less_than(23)]] =21
validate=number_less_than_or_equal_to(42) ,[[validate=number_less_than_or_equal_to(42)]] =23
validate=number_not_between(1 20) ,[[validate=number_not_between(1 20)]] =12
validate=number_not_equal_to(42) ,[[validate=number_not_equal_to(42)]] =123
validate=text_contains('foo') ,[[validate=text_contains('foo')]] foo bar baz
validate=text_does_not_contain('foo') ,[[validate=text_does_not_contain('foo')]] bar
validate=text_equal_to('foo') ,[[validate=text_equal_to('foo')]] foo
, ,
valign , ,
,[[valign=top]] valign=top ,
,[[valign=center]] valign=center ,
,[[valign=bottom]] valign=bottom ,
, ,
variables , ,
,depends_on_another ,=depends_on_another
,my_function() ,=my_function()
,bar ,=bar