Le principal problème est que le SGBD Jet est une bibliothèque de 32 bits qui est chargé dans le processus d'appel Ainsi, vous ne pourrez jamais utiliser Jet directement depuis votre application en mode 64 bits. Comme Tim l'a mentionné, vous pouvez écrire votre propre analyseur csv, mais comme il s'agit d'une application rétractable, vous voulez quelque chose qui gérera un plus large éventail de formats. Heureusement, il existe un certain nombre de façons de parler des applications 32 bits, de sorte que vous pouvez toujours utiliser Jet avec un truc.
Je voudrais écrire un petit exe qui a été marqué pour fonctionner uniquement en mode 32 bits. Cet exe prendrait un argument de ligne de commande du nom du fichier à lire et le nom d'un fichier temporaire à écrire. J'utiliserais Jet pour charger le csv/xls, puis mettre les données dans un tableau de tableaux, et utiliser le sérialiseur xml pour écrire les données dans le fichier temporaire.
Puis, quand je dois charger/convertir un fichier CSV/fichier xls, je ferais ce qui suit:
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);
}
}
On dirait que le pilote Office System 2007 est la solution idéale. Le téléchargement 25mb est un peu raide, cependant. –
Il n'est pas clair pour moi que les pilotes Office System 2007 sont réellement x64, par opposition à juste le remplacement de JET ... Quelqu'un at-il vérifié cela? –
Non, c'est définitivement x86 car je viens de rencontrer cette limitation en essayant d'ajouter SharePoint en tant que serveur lié dans MSSQL x64. Non applicable à l'OP mais la façon dont j'ai travaillé autour d'elle consistait à installer une instance x86 séparée liée à la source Oledb et enveloppée avec un tas de vues et l'instance x64 liée à l'instance x86. – Josh