のようになります主な問題は、Jet DBMSは、呼び出し側のプロセスにロードされる32ビットのライブラリであるということです64ビットモードではアプリケーション内からJetを直接使用することはできません。 Timが述べたように、独自のcsvパーサーを書くこともできますが、これは縮小ラップアプリなので、より幅広いフォーマットを扱うことができます。幸運なことに、32ビットアプリケーションを話すにはいくつかの方法があります。そのため、引き続きJetを使えます。
32ビットモードでのみ動作するようにマークされた小さなexeを書きます。このexeは、読み込むファイルの名前と書き込む一時ファイルの名前のコマンドライン引数をとります。 Jetを使用してcsv/xlsをロードし、配列の配列にデータを格納し、xmlシリアライザを使用してデータを一時ファイルに書き込みます。
私はCSV/XLSファイルを変換/ロードする必要があるときに、私は次の操作を行います:
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);
}
}
2007 Office System Driverのように見えます。しかし、25MBのダウンロードは少し急である。 –
2007年のOffice System Driverは、JETを置き換えるのではなく、実際にx64であることはわかりません。 –
MSSQL x64のリンクサーバーとしてSharePointを追加しようとすると、この制限に遭遇したので、間違いなくx86です。 OPには当てはまりませんでしたが、私はそれを回避するために、Oledbソースにリンクされた別のx86インスタンスをインストールし、それを複数のビューとx86インスタンスにリンクされたx64インスタンスでラップしました。 – Josh