2015-05-21 3 views
0

Я установил пароль на моем листе excel. Чтобы разблокировать рабочий лист, я изменил строку подключения OLEDB, но это не сработало. Я получил сообщение об ошибке, что «источник не содержит dataRows», что означает, что он не смог прочитать данные из файла excel.Как прочитать защищенный паролем лист Excel с OLEDB

Перед тем, как все было в порядке. Что может быть моей проблемой?

Это мой код:

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; 
} 

ответ

0

Вместо использования OleDbConnection вы могли бы рассмотреть возможность использования чтения библиотеки Excel, как EPPlus прочитать файл Excel. EPPlus поддерживает чтение защищенных паролем файлов excel.

Вам понадобится реализовать некоторый код для создания фактического DataTable, но это должно быть достаточно простым. Просто пойдите в Google, если вам нужно.

+0

Спасибо Rune. Поскольку мне нужно использовать ту же функцию в сети, мне нужно использовать OleDbConnection. Итак, невозможно ли прочитать лист Excel с защитой паролем, используя OleDbConnection? – Pragat123

+0

Нет, я не думаю, что вы можете это сделать. –

Смежные вопросы