Generally it is easier to work with raw data using SQL, so the first step is to get the raw data queryable in the easiest fashion.
The neatest solution is to use an external table. Convert the Excel spreadsheet into a CSV file then define an external table to query the file. Then you can use ...
INSERT INTO << table1 >> (...)
SELECT what_ever FROM << external_table >>
... or even ...
INSERT ALL
INTO << table1 >> (...)
INTO << table2 >> (...)
INTO << table3 >> (...)
SELECT * FROM << external_table >>
... depending on what rules you need to apply.
If your organization already uses external tables this should be easy to configure. However, some places are funny about allowing the database to interact with OS files, so you may not be able to use this approach. Find out more.
Alternatively you can build a staging table which matches the CSV file, and load the data into that using SQL*Loader. SQL*loader is a client-side tool, so it is requires less permissions to use.
If you don't want to build any new structures at all you can edit the CSV file to form a set of SELECT statements from DUAL (use UNION ALL) and insert into the target tables from that. Mastery of regex can really help with tasks like this.