The main problem is that the Jet DBMS is a 32bit library that gets loaded into the calling process, so you will never be able to use Jet directly from within your app in 64bit mode. As Tim mentioned you could write your own csv parser, but since this is a shrink-wrap app you want something that will handle a wider range of formats. Luckily, there are a number of ways to talk 32-bit apps, so you can still use Jet with a trick.
I would write a little exe that was marked to run only in 32-bit mode. This exe would take a command line argument of the name of the file to read and the name of a temp file to write to. I would use Jet to load the csv/xls, then put the data into an array of arrays, and use the xml serializer to write the data to the temp file.
Then when I need to load/convert a csv/xls file, I would do the following:
object[][] ConvertFile(string csvOrXlsFile)
{
var output = System.IO.Path.GetTempFileName();
try
{
var startinfo = new System.Diagnostics.ProcessStartInfo("convert.exe",
string.Format("\"{0}\" \"{1}\"", csvOrXlsFile, output));
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = startinfo;
proc.Start();
proc.WaitForExit();
var serializer = new System.Xml.Serialization.XmlSerializer(typeof(object[][]));
using (var reader = System.IO.File.OpenText(output))
return (object[][])serializer.Deserialize(reader);
}
finally
{
if (System.IO.File.Exists(output))
System.IO.File.Delete(output);
}
}