I updated your Excel file format to use rows instead of columns. I also saved it as a CSV file. You can do the same from Excel using save as.
I updated your block to remove the 1's form the attribute tags. Normally I would not recommend using the same tagname for multiple attributes, but it works ok.
I also added a description attribute to replace the "LOAD CASE NO. #" static text. I also added a column for that into the excel(csv) file. The column names in the CSV file are used to identify which attribute to fill in with the values.
Attached are all the files. Try it out and let me know what you think. I did update your block, so you will need to use this drawing file because it has the proper block definition in it.
Also If you are interested in learning how this is done, let me know and I will add comments to the code.
Oh and Name of command is LOADTREE. Copy and paste from below or drag and drop the loadtree.lsp file into your drawing area to test.
Good Luck,
;;;By: Clint Moore
;;;Date: 05/10/2017
;;;
(defun getLoadTreeData (loadtreefilename / gltd-LoadTreeFileHandle gltd-ReturnLoadTreeData lt-linedata lt-listdata)
(setq gltd-LoadTreeFileHandle (open loadtreefilename "r")
gltd-ReturnLoadTreeData (list)
)
(while (setq lt-linedata (read-line gltd-LoadTreeFileHandle))
(setq lt-listdata (SimpleCommaParse lt-linedata)
gltd-ReturnLoadTreeData (append gltd-ReturnLoadTreeData (list lt-listdata))
)
)
(close gltd-LoadTreeFileHandle)
gltd-ReturnLoadTreeData
)
(defun SimpleCommaParse (StringToParse / scp-parsedlist sc-delpos)
(setq scp-parsedlist (list))
(while (setq scp-delpos (vl-string-position 44 StringToParse))
(setq scp-parsedlist (append scp-parsedlist (list (substr StringToParse 1 scp-delpos)))
StringToParse (substr StringToParse (+ scp-delpos 2))
)
)
(setq scp-parsedlist (append scp-parsedlist (list StringToParse)))
scp-parsedlist
)
(defun FillAttributeTag (BlockEntity AttTagName AttValue / fat-ent fat-data fat-object)
(setq fat-ent BlockEntity
fat-data (entget fat-ent)
AttTagName (strcase AttTagName)
)
(if (cdr (assoc 66 fat-data))
(progn
(while (not (equal (cdr (assoc 0 fat-data)) "SEQEND"))
(setq fat-ent (entnext fat-ent)
fat-data (entget fat-ent)
)
(if (equal (cdr (assoc 2 fat-data)) AttTagName)
(progn
(setq fat-attobject (vlax-ename->vla-object fat-ent))
(vla-put-TextString fat-attobject AttValue)
)
)
)
)
)
)
(defun PlaceLoadTreeData (LoadTreeDataList / pltd-att_tags pltd-loadtrees pltd-insertpoint pltd-DistanceApart pltd-ent pltd-index)
(setq pltd-att_tags (car LoadTreeDataList)
pltd-loadtrees (cdr LoadTreeDataList)
pltd-insertpoint (list 0.0 0.0 0.0)
pltd-DistanceApart 2.334
)
(foreach lt pltd-loadtrees
(setq pltd-currattreq (getvar "ATTREQ"))
(setvar "ATTREQ" 0)
(command "-insert" "loadtree" pltd-insertpoint 1.0 0.0)
(setvar "ATTREQ" pltd-currattreq)
(setq pltd-insertpoint (polar pltd-insertpoint 0.0 pltd-DistanceApart)
pltd-ent (entlast)
pltd-index 0
)
(foreach att-tag pltd-att_tags
(FillAttributeTag pltd-ent att-tag (nth pltd-index lt))
(setq pltd-index (1+ pltd-index))
)
)
)
(defun c:LOADTREE( / excelfilename loadtreedata)
(setq excelfilename (getfiled "Select Loadtree CSV File: " "" "csv" 0))
(if excelfilename
(progn
(setq loadtreedata (getLoadTreeData excelfilename))
(if loadtreedata
(placeloadtreedata loadtreedata)
)
)
)
(princ)
)