C# OleDb与运行MS Office 2007的Windows 7冲突

C# OleDb与运行MS Office 2007的Windows 7冲突,c#,.net,oledb,C#,.net,Oledb,该程序在运行MS Office 2007的Windows XP中运行得很好,但在运行MS Office 2007的Windows 7中运行得不好。所以我决定使用Microsoft.Ace,所以我使用了以下连接字符串: string connString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=\"" + strDir + "\\\";" + "Extended Properties=\"text;HDR=YES;

该程序在运行MS Office 2007的Windows XP中运行得很好,但在运行MS Office 2007的Windows 7中运行得不好。所以我决定使用Microsoft.Ace,所以我使用了以下连接字符串:

string connString = "Provider=Microsoft.ACE.OLEDB.12.0;"
    + "Data Source=\"" + strDir + "\\\";"
    + "Extended Properties=\"text;HDR=YES;IMEX=1\"";
string connString = "Provider=Microsoft.Jet.OLEDB.4.0;"
    + "Data Source=\"" + strDir + "\\\";"
    + "Extended Properties=\"text;HDR=Yes;FMT=Delimited\"";
string connString = "Provider=Microsoft.ACE.OLEDB.12.0;"
    + "Data Source=\"" + strDir + "\\\";"
    + "Extended Properties=\"text;HDR=YES;IMEX=1\"";
方法如下:

public DataTable Load(string path, int columnCount)
{
    CreateSchema(path, columnCount);
    DataTable dtData = new DataTable();

    string fullPath = Path.GetFullPath(path);
    string csvFile = Path.GetFileName(fullPath);
    string directoryName = Path.GetDirectoryName(fullPath);

    string query;

    string connString = "Provider=Microsoft.ACE.OLEDB.12.0;"
      + "Data Source=\"" + directoryName + "\\\";"
      + "Extended Properties=\"text;HDR=YES;IMEX=1\"";

    query = "SELECT * FROM " + csvFile;

    OleDbDataAdapter dtAdapter = new OleDbDataAdapter(query, connString);

    dtAdapter.Fill(dtData);

    dtAdapter.Dispose();

    return dtData;
}
我的主要问题是,当我使用此连接字符串时,该程序在运行MS Office 2007的Windows XP中运行,但在运行MS Office 2007的Windows 7中不运行:

string connString = "Provider=Microsoft.ACE.OLEDB.12.0;"
    + "Data Source=\"" + strDir + "\\\";"
    + "Extended Properties=\"text;HDR=YES;IMEX=1\"";
string connString = "Provider=Microsoft.Jet.OLEDB.4.0;"
    + "Data Source=\"" + strDir + "\\\";"
    + "Extended Properties=\"text;HDR=Yes;FMT=Delimited\"";
string connString = "Provider=Microsoft.ACE.OLEDB.12.0;"
    + "Data Source=\"" + strDir + "\\\";"
    + "Extended Properties=\"text;HDR=YES;IMEX=1\"";
我提出我的研究需要使用ACE,所以我使用了以下连接字符串:

string connString = "Provider=Microsoft.ACE.OLEDB.12.0;"
    + "Data Source=\"" + strDir + "\\\";"
    + "Extended Properties=\"text;HDR=YES;IMEX=1\"";
string connString = "Provider=Microsoft.Jet.OLEDB.4.0;"
    + "Data Source=\"" + strDir + "\\\";"
    + "Extended Properties=\"text;HDR=Yes;FMT=Delimited\"";
string connString = "Provider=Microsoft.ACE.OLEDB.12.0;"
    + "Data Source=\"" + strDir + "\\\";"
    + "Extended Properties=\"text;HDR=YES;IMEX=1\"";

但仍然没有帮助。请帮帮我!谢谢

这两个连接字符串用于不同类型的文件。
第一个用于文本文件,第二个用于Excel 2007

第一个使用目录名作为数据源,
第二个要求在
strDir

看 及

这可能是您现在在ACE上出现错误的原因。

关于XP上的错误,我只能假设这与缺少JET/ACE驱动程序有关。在这种情况下,问题在于编译应用程序的平台。请看

我在这里看到了您的答案,这也可能是我的问题吗?是的,这是可能的,但如果不知道您的确切错误消息,则无法确定。请发布错误消息Received这是异常get:microsoft.ace.oledb.12.0提供程序未在本地注册是的,这就是确切的症状。为任何CPU编译的应用程序,试图在64位操作系统上加载32位驱动程序,或者代码、操作系统和驱动程序库之间存在其他不匹配。然后,我将构建到x86,并在客户端的PC上尝试