如何使用OLEDB读取受密码保护的Excel工作表

时间:2015-05-21 08:39:53

标签: c# excel oledb

我在Excel工作表上设置了密码。为了解锁工作表,我修改了OLEDB连接字符串,但它没有工作。我得到一个错误,"源包含没有dataRows",这意味着它无法从excel文件中读取数据。

之前很好。可能是我的问题?

这是我的代码:

public DataTable getExcelData(string fileName, string sheetName, ComboBox[] User_ComboBox)
{
    this.m_comboBox = User_ComboBox;

  // connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + fileName + "';Extended Properties= 'Excel 12.0 XML;HDR=No;IMEX=1'";
   connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Password=xyz;Extended Properties='Excel 8.0;HDR=YES'";

    string errorMessage = "";
    DataTable dt = new DataTable();

    try
    {
        string query = "SELECT * FROM [" + sheetName + "]";
        OleDbConnection con = new OleDbConnection(connectionString);
        OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, con);
        dataAdapter.Fill(dt);
    }
    catch (Exception exp)
    {
        // errorCode = ErrorDefinition.ERROR_OLEDBERROR;
        errorMessage = exp.Message;
    }
    return dt;
}

1 个答案:

答案 0 :(得分:0)

您可以考虑使用像EPPlus这样的Excel阅读库来阅读excel文件,而不是使用OleDbConnectionEPPlus支持读取受密码保护的Excel文件。

您需要实现一些代码来构建实际的DataTable,但这应该足够简单。如果需要,只需谷歌。