I see there are no accepted answers for this question after more than 10 months so I thought I'd have a go at it. Although I have been using Mathematica for since V8, I am only an occasional user and hence not at all an expert like the others who have chimed in so far - but I'll give it a shot.
Rather than using the Java based import to open and import the Excel file, I think a good alternative is to save the excel file as CSV and then import the CSV file using import (or other faster import methods - like discussed here).
I hate the idea of manually opening Excel and saving as CSV as it's messy and prone to error when you are trying to maintain integrity of your data analysis process. So I think a suitable solution is to automate the process of opening Excel and saving the csv file. Once you have imported the CSV file into Mathematica, then you can delete the CSV file to ensure you don't leave messy intermediate files in your file system.
To automate this process you can use Mathematica's NETLink package and take advantage of Microsoft's COM automation like so:
Define filenames and paths
SetDirectory[NotebookDirectory[]];
dataPath = "..\\Received\\";
dataFileName = "BigExcel.xlsx";
fullFilePath = FindFile[FileNameJoin[{dataPath, dataFileName}]];
(* we should really get the data file from the repo along with the \
revision number *)
tempCSVPath = FileNameJoin[{NotebookDirectory[], "temp.csv"}];
Use a COM object to control Excel:
Needs["NETLink`"] (* load NETLink *)
NETBlock[
excel = CreateCOMObject["Excel.Application"];
thisWB = excel@Workbooks@Open[fullFilePath];
(* Save the opened workbook as a temporary csv file *)
thisWB@SaveAs[tempCSVPath, 6] (* "6" is Excel speak for .csv *)
(* if successful then close excel *)
thisWB@Close[False]
]
Finish up by loading the .csv file then deleting it:
rawData = Import[tempCSVPath]
DeleteFile[tempCSVPath]
COM automation works really well in Mathematica and is as easy as writing VBA code (less the intellisense). To work out what you are doing you will need to reference the Excel Object Model Reference which can be found here.
More information on using this from Mathematica can be found here: http://reference.wolfram.com/language/NETLink/tutorial/CallingNETFromTheWolframLanguage.html.
Import
both run-time and memory-wise, and actually made it possible to import the file. Of course, I was relying on CSV format specifics, so this may not work for your case directly. $\endgroup$mx.gz
(not that this format is not necessary compatible among versions and platforms, but it's an order of magnitude faster to work with). You might also take a look at HDF5. $\endgroup$