I could write a macro to do it, but certainly there must be an existing utility to do this.
No utils. I think the resources are all busy doing language translations software 🙂
Besides, the actual work is trivial once you understand what is needed.
Writing a macro only makes sense if you're adept and intend to do this several times.
If you flatten your structure like this:
<dict><key>climbedDate</key><date>1950-06-03T00:00:00Z</date><key>height</key><i nteger>8091</integer><key>name</key><string>Mountain 7</string></dict>
...you can perhaps see where columns would be added in excel to bracket the data. You then fill down to flood the remaining rows. In your example, you would have six columns of data bracketed by a pair of tags each for a total of eighteen columns.
Grab a valid plist and insert your data structure and one item. To be sure it at least works, introduce/add this to, and run it in your xcode project, before proceeding to flood the rest of the data.
Copy/paste from your spreadsheet into the plist, being sure to locate/add the data between the proper main base tags. Apply a soft-wrap for your viewing ease if you like. Remove the initial dummy item and go back to your project.
If your plist isn't valid in basic structure, xcode will complain. If your app doesn't pull from it for whatever reason, but it likes the basics, you will see a white screen in the simulator. Again, making sure it works with just one item first, then flooding in the bulk data will help to troubleshoot if anything goes south along the way.