Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用OLEDB读取受密码保护的Excel工作表_C#_Excel_Oledb - Fatal编程技术网

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

C# 如何使用OLEDB读取受密码保护的Excel工作表,c#,excel,oledb,C#,Excel,Oledb,我已在excel工作表上设置了密码。为了解锁工作表,我修改了OLEDB连接字符串,但它不起作用。我得到一个错误,“源不包含数据行”,这意味着它无法从excel文件中读取数据 在天晴之前。我可能有什么问题 这是我的代码: public DataTable getExcelData(string fileName, string sheetName, ComboBox[] User_ComboBox) { this.m_comboBox = User_ComboBox; // conn

我已在excel工作表上设置了密码。为了解锁工作表,我修改了OLEDB连接字符串,但它不起作用。我得到一个错误,“源不包含数据行”,这意味着它无法从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;
}

<> >而不是使用<代码> OLebButox<代码>,您可以考虑使用Excel读取库来读取Excel文件。支持读取受密码保护的excel文件


您需要实现一些代码来构建实际的
数据表
,但这应该足够简单。如果你需要的话,用谷歌搜索一下就可以了

谢谢Rune。因为我需要在web中使用相同的功能,所以我需要使用OLEDB连接。那么,使用OleDbConnection读取受密码保护的Excel工作表是不可能的吗?不,我认为您不能这样做。