I've been involved in data warehousing and data migration projects for 14 years and have completed 5 multi-year projects, involving data records of over 300 million records in a single transaction table.
I am intimately familiar with what is called partner data (partners can be customers, employees, vendors, organizations) with names, titles, contact methods (phones, faxes, email, postal addresses), government generated ids like passport, driving licenses, tax ids), organization created id's like customer nos, account nos etc.
I have extremely good command over SQL and find a database to be a superior tool to generate large test data. I would program this in either MS Access, MySQL, SQL Server Express or a database of your choice. This will enable generation of data that is aligned across multiple tables, e.g. your scenario where there needs to be a employee table and a linked Salary table. Programming in EXCEL for the number of records which you desire i.e. 2 million would lead to an unstable EXCEL file.
I have done this before multiple times, as generation of volume data for performance testing purposes.
Please do ask for clarifications or setup a small project with value around $40 to run a pilot program to see my capability for delivery.