0

该程序在运行 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\"";

这是方法:

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.Jet.OLEDB.4.0;"
    + "Data Source=\"" + strDir + "\\\";"
    + "Extended Properties=\"text;HDR=Yes;FMT=Delimited\"";

我想出了我需要使用 ACE 的研究,所以我使用了这个 connectionString:

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

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

4

1 回答 1

0

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

第一个使用目录名称作为 DataSource,
第二个需要 Excel 文件的名称作为输入strDir

请参阅Excel2007 的连接字符串文本文件的连接字符串

这可能是您现在在 ACE 上遇到的错误的根源。
关于 XP 上的错误,我只能假设这与缺少 JET/ACE 驱动程序有关。在这种情况下,问题出在您为其编译应用程序的平台上。请看这个问题和相关答案

于 2013-04-15T07:55:31.963 回答