Bulk insert from a complex text file into a table
SQL Server BULK INSERT is very limited in the types of files it can import and your type of file is way outside of what it can do.

The best approach is to have the file format changed.

Second best is to have an external application do the parsing of the file and upload data to table.

If none of the above is possible then you should use SQL Server solutions below:


Assuming the "header" section appears only once in a file, load this file in two parts.
Load the first part into a separate one column staging table (use LASTROW parameter). The second part would be loaded using your current approach. You will then join the data using tSQL.
Create a staging table that would have an ID (will act as row number) and a single VARCHAR( MAX) column. Load the file into this table as is, without column splitting. 
Then, using SQL queries, manipulate the data into the format you need. The code will be rather ugly.


Some useful info: Splitting delimited strings

Update

SQL Server implementation option 1 would follow the steps below. Note: this is pseudo-code to avoid overly long code, that I have no way to test.

create table ##ImportHeader (RowID INT IDENTITY, RowData VARCHAR( 3000 ))
-- Load the first 3 rows into a separate table.
bulk insert ##ImportHeader from [YourFile] with( LASTROW = 3, FIELDTERMINATOR='\t' ROWTERMINATOR = '\n' )

-- Load the rest of the data
-- Your import table needs to have the same number of columns as the data you are loading
create table ##Import (RowID INT IDENTITY, Name VACRHAR( 200 ), Department VARCHAR( 200 ), Status VARCHAR( 10 ), Age INT, Gender VARCHAR( 10 ))
bulk insert ##Import from [YourFile] with( FIRSTROW = 5, FIELDTERMINATOR='\t' ROWTERMINATOR = '\n' )

-- Join data
SELECT CompanyID.RowData, CompanyName.RowData, CAST( SUBSTRING( CompanyDate.RowDate, 5, 50 ) AS DATETIME ),
   D.*
FROM ##Import AS D
    INNER JOIN ##ImportHeader AS CompanyID ON CompanyID.RowID = 1
    INNER JOIN ##ImportHeader AS CompanyName ON CompanyName.RowID = 2
    INNER JOIN ##ImportHeader AS CompanyDate ON CompanyDate.RowID = 3


What you are doing is loading the same file twice. First time you are loading first 3 rows and second time you are loading the rest of the structured data.