If your data files are in a sensible format (e.g. CSV or fixed-format character records) and you are using an Oracle (serverside) directory, then I can recommend using
external tables. If you're trying to load things like spreadsheets with multiple tabs, then you'll need to do some pre-processing e.g. to export the spreadsheet data as CSV first.
Oracle external tables allow you to treat external files as if they were normal database tables i.e. you can run SQL SELECTs against them, join them with other tables etc etc, so it is very easy to import data from an external table into a target table using SQL, or you can perform any extra processing with PL/SQL if needed.
If you specify the Oracle Loader access driver (instead of Oracle Datapump) when defining your external table, then you can use similar syntax to SQL*Loader to specify the detailed formats etc for loading/transforming/ignoring your individual data fields/records. External tables are fast, flexible and easier to maintain than arbitrary SQL*Loader scripts etc.
The external table is defined in advance via the CREATE TABLE statement, which will include the filename and record/field specifications, but it only actually tries to load data when you do a SELECT on the table. This means that any errors in your data formats may only be spotted when you actually try to read the data, not when the external table is created.
Also, you cannot write to an external table that was defined using the Oracle Loader access driver, e.g. to write extra CSV records out to the file, so you would have to use another approach for this (UTL_FILE,
Java, reporting tools, Oracle APEX etc). You can write to an external table created using the Oracle Datapump access driver, but this is a proprietary Oracle export/import format, so it may be less useful to you.