Forum Discussion
Jonhanwa
Sep 03, 2026Tin Contributor
How can I convert contacts VCF file to Excel on Windows 11?
Got a bunch of contacts saved as a .vcf file, a type of vCard file. Now, I need them organized into an Excel spreadsheet (.xlsx). This is much easier to sort/filter/edit the contacts. Manually retypi...
Ryleenless
Sep 03, 2026Tin Contributor
Here are some steps of how to use PowerShell to Convert vCard to XLS. The core of this method is a simple PowerShell command that reads all VCF files in a folder, extracts key details like name, organization, and email, and then formats that data into a CSV file.
1. Prepare your files: Place all the .vcf files you want to convert into a single folder.
2. Open PowerShell: Navigate to that folder. You can do this by opening the folder in File Explorer, then clicking File > Open Windows PowerShell.
3. Run the conversion script:
You can use a simple script like this to extract common fields:
powershellGet-ChildItem *.vcf |ForEach-Object {$contact = [ordered] @{}$_ | Select-String -Pattern '^(FN|ORG|TITLE|EMAIL):(.*)' | ForEach-Object {$contact[$_.Matches[0].Groups[1].Value] = $_.Matches[0].Groups[2].Value}[pscustomobject] $contact} |Export-Csv -Path contacts.csv -NoTypeInformation -Encoding UTF8
- This script finds lines starting with FN (Full Name), ORG (Organization), TITLE, and EMAIL.
- It then creates a structured table and exports it to a file named contacts.csv.
4. Convert CSV to XLS: Once you have the contacts.csv file, open it in Excel and simply save it as an Excel Workbook (.xlsx). This final step lets you convert vcard to xls.
For a more tailored conversion, especially if your vCards contain many unique fields, you can create a more advanced script. For example, the following script can split a single VCF file containing multiple contacts into individual files, a useful intermediate step:
powershellSet-Location -Path "C:\Users\$ENV:UserName\Contacts"$ext = "vcf"$rootName = "contact_"$reader = new-object System.IO.StreamReader(".\MultiContact.vcf")$count=1while(($line = $reader.ReadLine()) -ne $null) {if ($line -eq "BEGIN:VCARD") {$fileName = "{0}{1}.{2}" -f ($rootName,$count,$ext)++$count}Add-Content -path $fileName -value $line}$reader.Close()
This level of control is a key benefit of choosing PowerShell to convert vcard to xls, as you can adapt the logic to precisely match your contact data structure.