在VB.Net中使用密码保护文件的ACE驱动程序访问Excel文件

我试图以编程方式访问Excel工作表中包含的数据。 我想这样做而不显示Excel应用程序,并使用ACE OLEDB驱动程序与工作簿进行通信。

当Excel文件不受密码保护时,以下代码工作:

Dim fDialog As New OpenFileDialog() With fDialog .Title = "Seleccionar archivos"; .Filter = "Archivo Excel (*.xls;*.xlsx;*.xlsm)|*.xls;*.xlsx;*.xlsm" .Multiselect = False .InitialDirectory = System.Environment.CurrentDirectory & "\Datos" .FilterIndex = 1 .RestoreDirectory = True If .ShowDialog = Windows.Forms.DialogResult.OK Then Call Ver_Datos_Excel(.FileName) End If End '... Private Sub Ver_Datos_Excel(sFichero_Excel As String) Try Dim cadconex As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sFichero_Excel & ";Extended Properties=""Excel 12.0 Macro; HDR=YES""" Dim conorigen As New OleDbConnection(cadconex) Dim cmd As New OleDbCommand("Select * from [Desglose$]", conorigen) Dim ds As New DataSet Dim da As New OleDbDataAdapter Dim dt As New DataTable conorigen.Open() '~~~> This line fails only when the file is password protected '... End Sub 

注意:我放弃使用open(…)Workbooks方法,因为它显示了Excel应用程序。