I don't have time to put together a proper tut, or even document the following. However, it is pretty trivial, so maybe it will help illuminate:
(defun _FileToList ( filename / path handle result )
;; Convert a text file to a list of strings.
(if (setq path (findfile filename))
(if (setq handle (open path "r"))
(while (setq stream (read-line handle))
(setq result
(cons
stream
result
)
)
)
)
)
(if handle (close handle))
(reverse result)
)
(defun _CsvToList ( csv )
;; Convert a CSV (Comma Separated Values) string
;; to a list of strings.
( (lambda ( lst / result word )
(foreach code (reverse lst)
(if (eq 44 code)
(setq result (cons word result) word nil)
(setq word (cons code word))
)
)
(mapcar 'vl-list->string
(cons word result)
)
)
(vl-string->list csv)
)
)
(defun c:Test ( / fileAsList csvData fields )
(if (setq fileAsList (_FileToList "c:/docs/datum.csv"))
(progn
(setq csvData (mapcar '_CsvToList fileAsList))
(setq fields '(ID X Y Z DESC))
(foreach record csvData
(mapcar 'set fields '(nil nil nil nil nil))
(mapcar 'set fields record)
(foreach field fields
(princ field)
(princ "=")
(princ (eval field))
(if (null (eq field (last fields))) (princ ","))
)
(princ "\n")
)
)
)
(princ)
)
ID=1,X=482833.5680,Y=2643153.3620,Z=2.7700,DESC=OPUS HORIZ
ID=2,X=482904.3768,Y=2643119.6492,Z=1.5300,DESC=1" I.PIPE
ID=3,X=482905.2000,Y=2642513.1998,Z=2.7700,DESC=CALC
ID=4,X=483436.8271,Y=2642946.2945,Z=2.7700,DESC=Cogo
ID=5,X=482905.1864,Y=2642523.1998,Z=1.8300,DESC=FD 1" I.P.
ID=6,X=482902.0794,Y=2642513.8652,Z=3.0176,DESC=60d NAIL
ID=7,X=482776.3324,Y=2643179.2332,Z=3.0345,DESC=CL RD
ID=8,X=482848.5453,Y=2643020.1402,Z=2.3977,DESC=CL RD
ID=9,X=482876.6448,Y=2642930.1160,Z=2.2111,DESC=CL RD
ID=10,X=482881.1293,Y=2642847.5440,Z=1.8695,DESC=CL RD
ID=11,X=482862.7124,Y=2642741.3819,Z=2.0542,DESC=CL RD
ID=12,X=482870.5581,Y=2642674.7530,Z=2.1052,DESC=CL RD
ID=13,X=482907.3438,Y=2642644.4060,Z=2.6012,DESC=CL RD
ID=14,X=483277.1749,Y=2642594.3174,Z=3.5855,DESC=CONC PILE
ID=15,X=483460.3159,Y=2642632.9590,Z=3.6224,DESC=CONC PILE
ID=16,X=483421.2991,Y=2642724.4525,Z=3.0549,DESC=WOOD PILE
ID=17,X=483282.6350,Y=2642776.0969,Z=6.9742,DESC=WOOD PILE
ID=18,X=483197.7012,Y=2642744.4158,Z=6.9882,DESC=WOOD PILE
ID=19,X=482969.9102,Y=2642795.5905,Z=6.7244,DESC=WOOD PILE
ID=20,X=482955.7254,Y=2642722.0359,Z=3.1801,DESC=NG
ID=21,X=483092.5716,Y=2642729.2999,Z=3.0992,DESC=NG
Edit: Fixed pooched formatting.