Mac · iPhone · iPad — osascript automation — no upload
Export Numbers to CSV Guide, Terminal command and Python.
Export Apple Numbers spreadsheets to CSV. Step-by-step guide for Mac, iPhone and iPad. Enter your file path and get a personalised osascript Terminal command for automated recurring exports. Works on any macOS version.
osascript command — personalised for your paths macOS only
Enter your file paths — the Terminal command updates live
Terminal — paste and run
Numbers creates one CSV file per sheet in the output folder. The folder must exist before running the command. Run mkdir -p /your/output/folder first if needed.
Export Numbers to CSV — three methods
Choose the method that fits your device and workflow.
Mac menu
Open your spreadsheet in Numbers
Click File in the menu bar
Click Export To → CSV…
Select Unicode (UTF-8)
Click Next…
Choose a folder, click Export
iPhone & iPad
Open the spreadsheet in Numbers
Tap the … (More) button top-right
Tap Export
Tap CSV
Choose Save to Files, AirDrop or share
One CSV per sheet exported
iCloud web
Open icloud.com/numbers
Open your spreadsheet
Click the wrench icon in the toolbar
Click Download a Copy
Choose CSV
File downloads to your browser
Automate with osascript and Python
For recurring exports — run once manually or on a schedule.
Terminal — single file export
osascript -e '
tell application "Numbers"
open POSIX file "/Users/YourName/data.numbers"
delay 1
export front document to POSIX file "/Users/YourName/output/" as CSV
close front document saving no
end tell
'
Exports all sheets to the output folder. Each sheet becomes SheetName.csv. The output folder must already exist.
Python — batch export all .numbers files in a folder
import subprocess, os, glob
numbers_dir = '/Users/YourName/Documents/spreadsheets/'
output_dir = '/Users/YourName/Documents/csv-output/'
os.makedirs(output_dir, exist_ok=True)
for path in glob.glob(numbers_dir + '*.numbers'):
name = os.path.splitext(os.path.basename(path))[0]
outdir = os.path.join(output_dir, name) + '/'
os.makedirs(outdir, exist_ok=True)
script = f'''
tell application "Numbers"
open POSIX file "{path}"
delay 1
export front document to POSIX file "{outdir}" as CSV
close front document saving no
end tell'''
subprocess.run(['osascript', '-e', script], check=True)
print(f'Exported: {name}')
print('Done.')
Requires Numbers installed on macOS. Each .numbers file gets its own subfolder of CSVs — one per sheet. No additional Python packages needed.
What to do with the exported CSV
Numbers exports clean UTF-8 CSV — compatible with every major tool.
Open in Excel
Numbers CSVs use UTF-8 encoding. In Excel: Data → From Text/CSV → select UTF-8 to avoid encoding issues. Or use CSVShift CSV to Excel to convert first.
Load in pandas
pd.read_csv('sheet.csv', encoding='utf-8') — Numbers exports clean UTF-8 that pandas reads directly. No BOM handling needed.
Open in Google Sheets
Upload the CSV to Google Drive → right-click → Open with Google Sheets. Numbers → CSV → Sheets is the standard workflow for sharing data with non-Apple users.
Import into a database
Use CSVShift to convert the Numbers CSV export to SQL INSERT statements, SQLite, PostgreSQL or MongoDB for database import. Numbers → CSV → CSVShift → your database.
Your exact Terminal command, generated live. No guessing.
The osascript personaliser above generates the exact command for your file path and output folder — no editing placeholder strings. The Python batch script handles entire folders of .numbers files, creating a subfolder of CSVs per file. Both work on any macOS version with Numbers installed.
Numbers exports clean UTF-8 CSVs — one per sheet, named after the sheet. The File → Export To → CSV menu option on Mac creates a folder with all sheets in a single step. No third-party software required.
Live path personaliser
Enter your actual paths — the Terminal command updates in real time with zero placeholder editing.
All sheets exported
Numbers creates one CSV per sheet automatically — no need to export each sheet individually.
Python batch script
Export entire folders of .numbers files to CSV in one run — no additional Python packages needed.
Three platform guides
Mac menu, iPhone/iPad tap workflow and iCloud web — exact steps for every Apple platform.
Frequently asked questions
How do I export Apple Numbers to CSV?
In Numbers on Mac: File → Export To → CSV → choose UTF-8 encoding → Next → Export. Numbers creates one CSV per sheet in a folder. On iPhone/iPad: tap … → Export → CSV. On iCloud web: wrench icon → Download a Copy → CSV.
How do I export all sheets from Numbers to CSV at once?
Numbers' File → Export To → CSV automatically creates one CSV per sheet in a folder. You don't need to export each sheet individually — all sheets are exported in one step and named after their sheet tabs.
Can I automate Numbers to CSV export on a schedule?
Yes. Use the osascript command from the personaliser above, then add it to a launchd plist or cron job to run on a schedule. For recurring exports (daily reports, weekly data), the Python batch script handles multiple files in one run.
Why does my Numbers CSV have encoding issues in Excel?
Numbers exports UTF-8 without BOM. Excel on Windows expects UTF-8 BOM for auto-detection. Fix: in Excel use Data → From Text/CSV → select UTF-8 encoding manually. Or use CSVShift CSV to Excel to convert the file first — it adds the correct BOM automatically.