I’m sure there is a better way to do this — perhaps by setting up the user’s O365 account in the Contacts app on the Mac and dragging and dropping local contacts to the O365 contacts.
Nonetheless, this is the process I used to copy a user’s MacOS Contacts into their O365 address book (a.k.a. “People”):
1.) Open the user’s Apple Contacts application on their computer.
2.) Select all of the contacts and dragged them into a blank Apple Pages spreadsheet (there’s no way to export direct to CSV from Apple Contacts).
3.) Export a sample CSV file from OWA to figure out the column structure. Clear out all of the entries, leaving only the column headers.
4.) From the Apple Pages spreadsheet, copy and paste 200 rows of user data into OWA CSV and save off the file as CSV.
5.) Clear the data and copy and pasted the next batch of 200 and saved off the file. Repeat as necessary.
6.) Upload the CSV files via the OWA interface into the “People” section.
Why 200 at a time? OWA claims to support up to 2,000 contacts per upload but, in my experience, it would time out before completing.
Also, possibly of note, I only bothered copying and pasting in First Name, Last Name and email address into the CSV files I was uploading into OWA — I left out other data because it wasn’t necessary and kept the file sizes smaller (which I thought might help with OWA’s time out habits).