0

我正在尝试使用 c# 打开一个 excel 文件,但是 Visual Studio 给出了这个 OLEDB 异常:“无法解密文件。” 打开未受保护的 excel 文件时,代码可以正常工作。

下面是我的代码:

string conn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + s + ";Extended Properties='Excel 8.0;HDR=YES'";
        OleDbConnection objConn = new OleDbConnection(conn);
        objConn.Open();

        OleDbCommand cmd = new OleDbCommand("Select * from [Sheet1$]", objConn);
        OleDbDataAdapter da = new OleDbDataAdapter(cmd);
        da.Fill(dt);

我找到了以下网站,它建议了 vb 的解决方法,但我无法让它在 C# 中工作。VBA excel

任何帮助将不胜感激。

4

1 回答 1

3

您可以使用像OoXmlCrypto这样的开源库来解密受密码保护的文件,否则您仍然可以使用支持密码的 Microsoft Interop 官方库:

using Microsoft.Office.Interop.Excel

WorkbookObject.Password = password;

否则,在您的情况下最简单的方法是,您可以将密码属性添加到您的 OLeDb 提供者的连接字符串中:

string conn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + s + ";Password=password;Extended Properties='Excel 8.0;HDR=YES'";
于 2012-06-26T06:07:54.563 回答