diff --git a/README.md b/README.md index 9a4ebd2..1b8bb22 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ Various spreadsheet file format notes. +- [Data Interchange Format (DIF)](/dif/README.md) - [Symbolic Link (SLK/SYLK)](/sylk/README.md) - [XLSB Short Records](/xlsb_short_records/README.md) diff --git a/dif/README.md b/dif/README.md new file mode 100644 index 0000000..829c39f --- /dev/null +++ b/dif/README.md @@ -0,0 +1,31 @@ +# Data Interchange Format + +Files starting with `TABLE` followed by a newline marker followed by `0,1` +should be interpreted as DIF. + +There exists a technical specification from 1983. + +### Encoding + +The specification includes a Pascal procedure for reading a string. There is an +error in handling double quotes: + +```pascal + if str[1] = '"' { strip quotes } + then begin + delete (str, 1, 1); + delete (str, pos('"', str), length(str) - pos('"', str) + 1) + end +``` + +It does not correctly handle `"` characters in strings. Writers should use `""` +(similar to CSV encoding). The following DIF snippet represents `"`: + +```dif +1,0 +"""" +``` + + + +[![Analytics](https://ga-beacon.appspot.com/UA-36810333-1/SheetJS/notes?pixel)](https://github.com/SheetJS/notes) diff --git a/dif/byte.dif b/dif/byte.dif new file mode 100755 index 0000000..444f030 --- /dev/null +++ b/dif/byte.dif @@ -0,0 +1,1545 @@ +TABLE +0,1 +"SHEETJS" +VECTORS +0,255 +"" +TUPLES +0,2 +"" +DATA +0,0 +"" +-1,0 +BOT +0,1 +V +1,0 +"" +-1,0 +BOT +0,2 +V +1,0 +"" +-1,0 +BOT +0,3 +V +1,0 +"" +-1,0 +BOT +0,4 +V +1,0 +"" +-1,0 +BOT +0,5 +V +1,0 +"" +-1,0 +BOT +0,6 +V +1,0 +"" +-1,0 +BOT +0,7 +V +1,0 +"" +-1,0 +BOT +0,8 +V +1,0 +"" +-1,0 +BOT +0,9 +V +1,0 +" " +-1,0 +BOT +0,10 +V +1,0 +" +" +-1,0 +BOT +0,11 +V +1,0 +" " +-1,0 +BOT +0,12 +V +1,0 +" " +-1,0 +BOT +0,13 +V +1,0 +" " +-1,0 +BOT +0,14 +V +1,0 +"" +-1,0 +BOT +0,15 +V +1,0 +"" +-1,0 +BOT +0,16 +V +1,0 +"" +-1,0 +BOT +0,17 +V +1,0 +"" +-1,0 +BOT +0,18 +V +1,0 +"" +-1,0 +BOT +0,19 +V +1,0 +"" +-1,0 +BOT +0,20 +V +1,0 +"" +-1,0 +BOT +0,21 +V +1,0 +"" +-1,0 +BOT +0,22 +V +1,0 +"" +-1,0 +BOT +0,23 +V +1,0 +"" +-1,0 +BOT +0,24 +V +1,0 +"" +-1,0 +BOT +0,25 +V +1,0 +"" +-1,0 +BOT +0,26 +V +1,0 +"" +-1,0 +BOT +0,27 +V +1,0 +"" +-1,0 +BOT +0,28 +V +1,0 +"" +-1,0 +BOT +0,29 +V +1,0 +"" +-1,0 +BOT +0,30 +V +1,0 +"" +-1,0 +BOT +0,31 +V +1,0 +"" +-1,0 +BOT +0,32 +V +1,0 +" " +-1,0 +BOT +0,33 +V +1,0 +"!" +-1,0 +BOT +0,34 +V +1,0 +"""" +-1,0 +BOT +0,35 +V +1,0 +"#" +-1,0 +BOT +0,36 +V +1,0 +"$" +-1,0 +BOT +0,37 +V +1,0 +"%" +-1,0 +BOT +0,38 +V +1,0 +"&" +-1,0 +BOT +0,39 +V +1,0 +"'" +-1,0 +BOT +0,40 +V +1,0 +"(" +-1,0 +BOT +0,41 +V +1,0 +")" +-1,0 +BOT +0,42 +V +1,0 +"*" +-1,0 +BOT +0,43 +V +1,0 +"+" +-1,0 +BOT +0,44 +V +1,0 +"," +-1,0 +BOT +0,45 +V +1,0 +"-" +-1,0 +BOT +0,46 +V +1,0 +"." +-1,0 +BOT +0,47 +V +1,0 +"/" +-1,0 +BOT +0,48 +V +1,0 +"0" +-1,0 +BOT +0,49 +V +1,0 +"1" +-1,0 +BOT +0,50 +V +1,0 +"2" +-1,0 +BOT +0,51 +V +1,0 +"3" +-1,0 +BOT +0,52 +V +1,0 +"4" +-1,0 +BOT +0,53 +V +1,0 +"5" +-1,0 +BOT +0,54 +V +1,0 +"6" +-1,0 +BOT +0,55 +V +1,0 +"7" +-1,0 +BOT +0,56 +V +1,0 +"8" +-1,0 +BOT +0,57 +V +1,0 +"9" +-1,0 +BOT +0,58 +V +1,0 +":" +-1,0 +BOT +0,59 +V +1,0 +";" +-1,0 +BOT +0,60 +V +1,0 +"<" +-1,0 +BOT +0,61 +V +1,0 +"=" +-1,0 +BOT +0,62 +V +1,0 +">" +-1,0 +BOT +0,63 +V +1,0 +"?" +-1,0 +BOT +0,64 +V +1,0 +"@" +-1,0 +BOT +0,65 +V +1,0 +"A" +-1,0 +BOT +0,66 +V +1,0 +"B" +-1,0 +BOT +0,67 +V +1,0 +"C" +-1,0 +BOT +0,68 +V +1,0 +"D" +-1,0 +BOT +0,69 +V +1,0 +"E" +-1,0 +BOT +0,70 +V +1,0 +"F" +-1,0 +BOT +0,71 +V +1,0 +"G" +-1,0 +BOT +0,72 +V +1,0 +"H" +-1,0 +BOT +0,73 +V +1,0 +"I" +-1,0 +BOT +0,74 +V +1,0 +"J" +-1,0 +BOT +0,75 +V +1,0 +"K" +-1,0 +BOT +0,76 +V +1,0 +"L" +-1,0 +BOT +0,77 +V +1,0 +"M" +-1,0 +BOT +0,78 +V +1,0 +"N" +-1,0 +BOT +0,79 +V +1,0 +"O" +-1,0 +BOT +0,80 +V +1,0 +"P" +-1,0 +BOT +0,81 +V +1,0 +"Q" +-1,0 +BOT +0,82 +V +1,0 +"R" +-1,0 +BOT +0,83 +V +1,0 +"S" +-1,0 +BOT +0,84 +V +1,0 +"T" +-1,0 +BOT +0,85 +V +1,0 +"U" +-1,0 +BOT +0,86 +V +1,0 +"V" +-1,0 +BOT +0,87 +V +1,0 +"W" +-1,0 +BOT +0,88 +V +1,0 +"X" +-1,0 +BOT +0,89 +V +1,0 +"Y" +-1,0 +BOT +0,90 +V +1,0 +"Z" +-1,0 +BOT +0,91 +V +1,0 +"[" +-1,0 +BOT +0,92 +V +1,0 +"\" +-1,0 +BOT +0,93 +V +1,0 +"]" +-1,0 +BOT +0,94 +V +1,0 +"^" +-1,0 +BOT +0,95 +V +1,0 +"_" +-1,0 +BOT +0,96 +V +1,0 +"`" +-1,0 +BOT +0,97 +V +1,0 +"a" +-1,0 +BOT +0,98 +V +1,0 +"b" +-1,0 +BOT +0,99 +V +1,0 +"c" +-1,0 +BOT +0,100 +V +1,0 +"d" +-1,0 +BOT +0,101 +V +1,0 +"e" +-1,0 +BOT +0,102 +V +1,0 +"f" +-1,0 +BOT +0,103 +V +1,0 +"g" +-1,0 +BOT +0,104 +V +1,0 +"h" +-1,0 +BOT +0,105 +V +1,0 +"i" +-1,0 +BOT +0,106 +V +1,0 +"j" +-1,0 +BOT +0,107 +V +1,0 +"k" +-1,0 +BOT +0,108 +V +1,0 +"l" +-1,0 +BOT +0,109 +V +1,0 +"m" +-1,0 +BOT +0,110 +V +1,0 +"n" +-1,0 +BOT +0,111 +V +1,0 +"o" +-1,0 +BOT +0,112 +V +1,0 +"p" +-1,0 +BOT +0,113 +V +1,0 +"q" +-1,0 +BOT +0,114 +V +1,0 +"r" +-1,0 +BOT +0,115 +V +1,0 +"s" +-1,0 +BOT +0,116 +V +1,0 +"t" +-1,0 +BOT +0,117 +V +1,0 +"u" +-1,0 +BOT +0,118 +V +1,0 +"v" +-1,0 +BOT +0,119 +V +1,0 +"w" +-1,0 +BOT +0,120 +V +1,0 +"x" +-1,0 +BOT +0,121 +V +1,0 +"y" +-1,0 +BOT +0,122 +V +1,0 +"z" +-1,0 +BOT +0,123 +V +1,0 +"{" +-1,0 +BOT +0,124 +V +1,0 +"|" +-1,0 +BOT +0,125 +V +1,0 +"}" +-1,0 +BOT +0,126 +V +1,0 +"~" +-1,0 +BOT +0,127 +V +1,0 +"" +-1,0 +BOT +0,128 +V +1,0 +"" +-1,0 +BOT +0,129 +V +1,0 +"" +-1,0 +BOT +0,130 +V +1,0 +"" +-1,0 +BOT +0,131 +V +1,0 +"" +-1,0 +BOT +0,132 +V +1,0 +"" +-1,0 +BOT +0,133 +V +1,0 +"" +-1,0 +BOT +0,134 +V +1,0 +"" +-1,0 +BOT +0,135 +V +1,0 +"" +-1,0 +BOT +0,136 +V +1,0 +"" +-1,0 +BOT +0,137 +V +1,0 +"" +-1,0 +BOT +0,138 +V +1,0 +"" +-1,0 +BOT +0,139 +V +1,0 +"" +-1,0 +BOT +0,140 +V +1,0 +"" +-1,0 +BOT +0,141 +V +1,0 +"" +-1,0 +BOT +0,142 +V +1,0 +"" +-1,0 +BOT +0,143 +V +1,0 +"" +-1,0 +BOT +0,144 +V +1,0 +"" +-1,0 +BOT +0,145 +V +1,0 +"" +-1,0 +BOT +0,146 +V +1,0 +"" +-1,0 +BOT +0,147 +V +1,0 +"" +-1,0 +BOT +0,148 +V +1,0 +"" +-1,0 +BOT +0,149 +V +1,0 +"" +-1,0 +BOT +0,150 +V +1,0 +"" +-1,0 +BOT +0,151 +V +1,0 +"" +-1,0 +BOT +0,152 +V +1,0 +"" +-1,0 +BOT +0,153 +V +1,0 +"" +-1,0 +BOT +0,154 +V +1,0 +"" +-1,0 +BOT +0,155 +V +1,0 +"" +-1,0 +BOT +0,156 +V +1,0 +"" +-1,0 +BOT +0,157 +V +1,0 +"" +-1,0 +BOT +0,158 +V +1,0 +"" +-1,0 +BOT +0,159 +V +1,0 +"" +-1,0 +BOT +0,160 +V +1,0 +"" +-1,0 +BOT +0,161 +V +1,0 +"" +-1,0 +BOT +0,162 +V +1,0 +"" +-1,0 +BOT +0,163 +V +1,0 +"" +-1,0 +BOT +0,164 +V +1,0 +"" +-1,0 +BOT +0,165 +V +1,0 +"" +-1,0 +BOT +0,166 +V +1,0 +"" +-1,0 +BOT +0,167 +V +1,0 +"" +-1,0 +BOT +0,168 +V +1,0 +"" +-1,0 +BOT +0,169 +V +1,0 +"" +-1,0 +BOT +0,170 +V +1,0 +"" +-1,0 +BOT +0,171 +V +1,0 +"" +-1,0 +BOT +0,172 +V +1,0 +"" +-1,0 +BOT +0,173 +V +1,0 +"" +-1,0 +BOT +0,174 +V +1,0 +"" +-1,0 +BOT +0,175 +V +1,0 +"" +-1,0 +BOT +0,176 +V +1,0 +"" +-1,0 +BOT +0,177 +V +1,0 +"" +-1,0 +BOT +0,178 +V +1,0 +"" +-1,0 +BOT +0,179 +V +1,0 +"" +-1,0 +BOT +0,180 +V +1,0 +"" +-1,0 +BOT +0,181 +V +1,0 +"" +-1,0 +BOT +0,182 +V +1,0 +"" +-1,0 +BOT +0,183 +V +1,0 +"" +-1,0 +BOT +0,184 +V +1,0 +"" +-1,0 +BOT +0,185 +V +1,0 +"" +-1,0 +BOT +0,186 +V +1,0 +"" +-1,0 +BOT +0,187 +V +1,0 +"" +-1,0 +BOT +0,188 +V +1,0 +"" +-1,0 +BOT +0,189 +V +1,0 +"" +-1,0 +BOT +0,190 +V +1,0 +"" +-1,0 +BOT +0,191 +V +1,0 +"" +-1,0 +BOT +0,192 +V +1,0 +"" +-1,0 +BOT +0,193 +V +1,0 +"" +-1,0 +BOT +0,194 +V +1,0 +"" +-1,0 +BOT +0,195 +V +1,0 +"" +-1,0 +BOT +0,196 +V +1,0 +"" +-1,0 +BOT +0,197 +V +1,0 +"" +-1,0 +BOT +0,198 +V +1,0 +"" +-1,0 +BOT +0,199 +V +1,0 +"" +-1,0 +BOT +0,200 +V +1,0 +"" +-1,0 +BOT +0,201 +V +1,0 +"" +-1,0 +BOT +0,202 +V +1,0 +"" +-1,0 +BOT +0,203 +V +1,0 +"" +-1,0 +BOT +0,204 +V +1,0 +"" +-1,0 +BOT +0,205 +V +1,0 +"" +-1,0 +BOT +0,206 +V +1,0 +"" +-1,0 +BOT +0,207 +V +1,0 +"" +-1,0 +BOT +0,208 +V +1,0 +"" +-1,0 +BOT +0,209 +V +1,0 +"" +-1,0 +BOT +0,210 +V +1,0 +"" +-1,0 +BOT +0,211 +V +1,0 +"" +-1,0 +BOT +0,212 +V +1,0 +"" +-1,0 +BOT +0,213 +V +1,0 +"" +-1,0 +BOT +0,214 +V +1,0 +"" +-1,0 +BOT +0,215 +V +1,0 +"" +-1,0 +BOT +0,216 +V +1,0 +"" +-1,0 +BOT +0,217 +V +1,0 +"" +-1,0 +BOT +0,218 +V +1,0 +"" +-1,0 +BOT +0,219 +V +1,0 +"" +-1,0 +BOT +0,220 +V +1,0 +"" +-1,0 +BOT +0,221 +V +1,0 +"" +-1,0 +BOT +0,222 +V +1,0 +"" +-1,0 +BOT +0,223 +V +1,0 +"" +-1,0 +BOT +0,224 +V +1,0 +"" +-1,0 +BOT +0,225 +V +1,0 +"" +-1,0 +BOT +0,226 +V +1,0 +"" +-1,0 +BOT +0,227 +V +1,0 +"" +-1,0 +BOT +0,228 +V +1,0 +"" +-1,0 +BOT +0,229 +V +1,0 +"" +-1,0 +BOT +0,230 +V +1,0 +"" +-1,0 +BOT +0,231 +V +1,0 +"" +-1,0 +BOT +0,232 +V +1,0 +"" +-1,0 +BOT +0,233 +V +1,0 +"" +-1,0 +BOT +0,234 +V +1,0 +"" +-1,0 +BOT +0,235 +V +1,0 +"" +-1,0 +BOT +0,236 +V +1,0 +"" +-1,0 +BOT +0,237 +V +1,0 +"" +-1,0 +BOT +0,238 +V +1,0 +"" +-1,0 +BOT +0,239 +V +1,0 +"" +-1,0 +BOT +0,240 +V +1,0 +"" +-1,0 +BOT +0,241 +V +1,0 +"" +-1,0 +BOT +0,242 +V +1,0 +"" +-1,0 +BOT +0,243 +V +1,0 +"" +-1,0 +BOT +0,244 +V +1,0 +"" +-1,0 +BOT +0,245 +V +1,0 +"" +-1,0 +BOT +0,246 +V +1,0 +"" +-1,0 +BOT +0,247 +V +1,0 +"" +-1,0 +BOT +0,248 +V +1,0 +"" +-1,0 +BOT +0,249 +V +1,0 +"" +-1,0 +BOT +0,250 +V +1,0 +"" +-1,0 +BOT +0,251 +V +1,0 +"" +-1,0 +BOT +0,252 +V +1,0 +"" +-1,0 +BOT +0,253 +V +1,0 +"" +-1,0 +BOT +0,254 +V +1,0 +"" +-1,0 +BOT +0,255 +V +1,0 +"" +-1,0 +EOD diff --git a/sylk/README.md b/sylk/README.md index 48e52eb..eda1f88 100644 --- a/sylk/README.md +++ b/sylk/README.md @@ -66,6 +66,7 @@ For example, `\x1BNj` encodes byte `0x8C` - Bytes `0xA8`, `0xB0` and `0xB4` have space characters (` `) after the letter. Byte `0xA8` is encoded as `\x1BNH\x20` + ## Record Types | Record Type | Description |